c语言读取txt文件里面的数据
读取config.txt文件的数据,内容为:cfsetispeed=57600stopbits=1parity=0databits=8要求c文件能读取到这4个变量,后输出...
读取config.txt文件的数据,内容为:
cfsetispeed=57600
stopbits=1
parity=0
databits=8
要求c文件能读取到这4个变量,后输出这4个变量验证
请大家帮忙看看,我自己编了没成功。 没什么钱了,不好意思 展开
cfsetispeed=57600
stopbits=1
parity=0
databits=8
要求c文件能读取到这4个变量,后输出这4个变量验证
请大家帮忙看看,我自己编了没成功。 没什么钱了,不好意思 展开
展开全部
在C语言中,文件操作都是由库函数来完成的。
要读取一个txt文件,首先要使用文件打开函数fopen()。
fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式) 其中,“文件指针名”必须是被说明为FILE 类型的指针变量,“文件名”是被打开文件的文件名。 “使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。
其次,使用文件读写函数读取文件。
在C语言中提供了多种文件读写的函数:
·字符读写函数 :fgetc和fputc
·字符串读写函数:fgets和fputs
·数据块读写函数:freed和fwrite
·格式化读写函数:fscanf和fprinf
最后,在文件读取结束要使用文件关闭函数fclose()关闭文件。
下面以格式化读写函数fscanf和fprintf为例,实现对文件A.txt(各项信息以空格分割)的读取,并将它的信息以新的格式(用制表符分割各项信息)写入B.txt,实现对A.txt的处理。
C语言源程序如下所示:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
typedef struct student{
char name[32];
int no;
char sex[16];
float score;
} stu;
int main(int argc, char* argv[])
{
//打开文件
FILE * r=fopen("A.txt","r");
assert(r!=NULL);
FILE * w=fopen("B.txt","w");
assert(w!=NULL);
//读写文件
stu a[128];
int i=0;
while(fscanf(r,"%s%d%s%f",a[i].name,&a[i].no,a[i].sex,&a[i].score)!=EOF)
{
printf("%s\t%d\t%s\t%g\n",a[i].name,a[i].no,a[i].sex,a[i].score);//输出到显示器屏幕
fprintf(w,"%s\t%d\t%s\t%g\n",a[i].name,a[i].no,a[i].sex,a[i].score);//输出到文件B.txt
i++;
}
//关闭文件
fclose(r);
fclose(w);
system("pause");
return 0;
}
要读取一个txt文件,首先要使用文件打开函数fopen()。
fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式) 其中,“文件指针名”必须是被说明为FILE 类型的指针变量,“文件名”是被打开文件的文件名。 “使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。
其次,使用文件读写函数读取文件。
在C语言中提供了多种文件读写的函数:
·字符读写函数 :fgetc和fputc
·字符串读写函数:fgets和fputs
·数据块读写函数:freed和fwrite
·格式化读写函数:fscanf和fprinf
最后,在文件读取结束要使用文件关闭函数fclose()关闭文件。
下面以格式化读写函数fscanf和fprintf为例,实现对文件A.txt(各项信息以空格分割)的读取,并将它的信息以新的格式(用制表符分割各项信息)写入B.txt,实现对A.txt的处理。
C语言源程序如下所示:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
typedef struct student{
char name[32];
int no;
char sex[16];
float score;
} stu;
int main(int argc, char* argv[])
{
//打开文件
FILE * r=fopen("A.txt","r");
assert(r!=NULL);
FILE * w=fopen("B.txt","w");
assert(w!=NULL);
//读写文件
stu a[128];
int i=0;
while(fscanf(r,"%s%d%s%f",a[i].name,&a[i].no,a[i].sex,&a[i].score)!=EOF)
{
printf("%s\t%d\t%s\t%g\n",a[i].name,a[i].no,a[i].sex,a[i].score);//输出到显示器屏幕
fprintf(w,"%s\t%d\t%s\t%g\n",a[i].name,a[i].no,a[i].sex,a[i].score);//输出到文件B.txt
i++;
}
//关闭文件
fclose(r);
fclose(w);
system("pause");
return 0;
}
展开全部
自己对比下吧...............
#include<stdio.h>
void main()
{
FILE *fp = NULL;
int number[4] = {};
if (fp = fopen("e:\\1.txt", "r"))
{
for (int i = 0; i < 4; i++)
fscanf(fp, "%*[^=]=%d", number+i);
fclose(fp);
printf("%d, %d, %d, %d\n", number[0], number[1], number[2], number[3]);
}
return;
}
..................................................................
最主要的原因,你那个for里面虽然有用 i 来控制次数,可fgets和sscanf里面根本就没用 i ,一直在往同一地址写数据,其他细节我就不多说了.....
#include<stdio.h>
void main()
{
FILE *fp = NULL;
int number[4] = {};
if (fp = fopen("e:\\1.txt", "r"))
{
for (int i = 0; i < 4; i++)
fscanf(fp, "%*[^=]=%d", number+i);
fclose(fp);
printf("%d, %d, %d, %d\n", number[0], number[1], number[2], number[3]);
}
return;
}
..................................................................
最主要的原因,你那个for里面虽然有用 i 来控制次数,可fgets和sscanf里面根本就没用 i ,一直在往同一地址写数据,其他细节我就不多说了.....
追答
我这个是在windows上用vs编的,我自己试了下没问题
你用的ubuntu,按这个状况来看,多半是文件路径出错了,你在return前加个
else
{
printf("open file error");
}
如果这句话被显示出来的话,就是文件没有打开成功,我那个地址"e:\\1.txt"是随便写的,你要根据你的实际情况改下
还有,对于初学者来说,调试是一项非常重要的技能,能很很明了的告诉你错误的原因,而vs的调试功能可是相当相当强大的,不喜欢vc6的话装个vs2013,用着很舒服的
如果实在要用linux,对于你来说,我觉得你至少要装个带调试功能的IDE,比如code::blocks神么的
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
代码没有贴出来 怎么帮你看啊
追问
不好意思啊,图片出来了,显示是段错误(核心已转储)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询