首页技术c语言fscanf读取txt文件?c语言fopen打开文件失败

c语言fscanf读取txt文件?c语言fopen打开文件失败

编程之家2026-07-011096次浏览

大家好,今天来为大家解答c语言fscanf读取txt文件这个问题的一些问题点,包括c语言fopen打开文件失败也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~

c语言fscanf读取txt文件?c语言fopen打开文件失败

C语言 文件操作,要读取一个txt文件内容

在C语言中,文件操作都是由库函数来完成的。

要读取一个txt文件,首先要使用文件打开函数fopen()。

fopen函数用来打开一个文件,其调用的一般形式为:文件指针名=fopen(文件名,使用文件方式)其中,“文件指针名”必须是被说明为FILE类型的指针变量,“文件名”是被打开文件的文件名。“使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。

其次,使用文件读写函数读取文件。

在C语言中提供了多种文件读写的函数:

·字符读写函数:fgetc和fputc

c语言fscanf读取txt文件?c语言fopen打开文件失败

·字符串读写函数:fgets和fputs

·数据块读写函数:freed和fwrite

·格式化读写函数:fscanf和fprinf

最后,在文件读取结束要使用文件关闭函数fclose()关闭文件。

下面以格式化读写函数fscanf和fprintf为例,实现对文件A.txt(各项信息以空格分割)的读取,并将它的信息以新的格式(用制表符分割各项信息)写入B.txt,实现对A.txt的处理。

C语言源程序如下所示:

c语言fscanf读取txt文件?c语言fopen打开文件失败

#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;

}

C语言文件读取fscanf(),该怎么处理

fscanf位于头文件<stdio.h>中,函数原型为int fscanf(FILE*stream, constchar*format, [argument...]);其功能为根据数据格式(format)从输入流(stream)中写入数据(argument);与fgets的差别在于:fscanf遇到空格和换行时结束,注意空格时也结束,fgets遇到空格不结束。

函数名: fscanf

功能:从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。这与fgets有区别,fgets遇到空格不结束。

返回值:整型,成功返回读入的参数的个数,失败返回EOF(-1)。

用法:

1 int fscanf(FILE*stream,constchar*format,[argument...]);

FILE*stream:文件指针

char*format:格式字符串

[argument...]:输入列表

格式字符说明

常用基本参数对照:

%d:读入一个十进制整数.

%i:读入十进制,八进制,十六进制整数,与%d类似,但是在编译时通过数据前置或后置来区分进制,如加入“0x”则是十六进制,加入“0”则为八进制。例如串“031”使用%d时会被算作31,但是使用%i时会算作25.

%u:读入一个无符号十进制整数.

%f%F%g%G:用来输入实数,可以用小数形式或指数形式输入.

%x%X:读入十六进制整数.

%o':读入八进制整数.

%s:读入一个字符串,遇空字符‘\0'结束。

%c:读入一个字符。无法读入空值。空格可以被读入。

附加格式说明字符表修饰符说明

L/l长度修饰符输入"长"数据

h长度修饰符输入"短"数据

示例说明

如果要求从标准输入中输入一串字符串和一个整型数,那么参数“%s%d”表示什么呢?默认情况下,在终端上(这里假设程序为控制台应用程序)输入第一个参数的值的时候敲下回车,则在第二行输入的为第二个参数值,采用这种输入方法那么格式字符的形式就无关紧要了。[1]

这里要特殊说明的是如果参数在同一行给出,那么格式字符的参数与终端的输入会有什么关系。举个例子:如果格式字符为“%s+%d”,那么参数的输入就应该为 string+ integer。

程序例

例一

#include<stdlib.h>

#include<stdio.h>

int main(void)

{

int i;

printf("Input an integer:");

/*从标准输入中读取一个整数*/

if(fscanf(stdin,"%d",&i))

printf("The integer read was:%d\n", i);

else

{

fprintf(stderr,"Error reading an integer from stdin.\n");

exit(1);

}

return 0;

}

返回EOF如果读取到文件结尾。

例二

附:MSDN中例子

#include<stdio.h>

FILE*stream;

int main(void)

{

long l;

float fp;

char s[81];

char c;

stream= fopen("fscanf.out","w+");

if(stream==NULL)

printf("The file fscanf.out was not opened\n");

else

{

fprintf(stream,"%s%ld%f%c","a-string", 65000,3.14159,'x');

/*将指针设置至文件开头*/

fseek(stream,0L,SEEK_SET);

/*从文件中读取数据*/

fscanf(stream,"%s",s);

fscanf(stream,"%ld",&l);

fscanf(stream,"%f",&fp);

fscanf(stream,"%c",&c);

/*输出读取的数据*/

printf("%s\n",s);

printf("%ld\n",l);

printf("%f\n",fp);

printf("%c\n",c);

fclose(stream);

}

return 0;

}//这样会有意外输出

关于C语言读取文件及fscanf函数的问题

函数名: fscanf

功能:从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。这与fgets有区别,fgets遇到空格不结束。

返回值:整型,成功返回读入的参数的个数,失败返回EOF(-1)。

用法:

1 int fscanf(FILE*stream,constchar*format,[argument...]);

FILE*stream:文件指针;

char*format:格式字符串;

[argument...]:输入列表。

例如:

FILE* fp;

char a[10];

int b;

double c;

fscanf(fp,"%s%d%lf", a,&b,&c);

和scanf一样,格式化串的空格不代表读取的子串有空格,存放读取数据的参数都是指针。

扩展阅读,C语言中文件的读取和写:

FILE*pFile=fopen("1.txt","r");//获取文件的指针

char*pBuf;//定义文件指针

fseek(pFile,0,SEEK_END);//把指针移动到文件的结尾,获取文件长度

int len=ftell(pFile);//获取文件长度

pBuf=new char[len+1];//定义数组长度

rewind(pFile);//把指针移动到文件开头因为我们一开始把指针移动到结尾,如果不移动回来会出错

fread(pBuf,1,len,pFile);//读文件

pBuf[len]=0;//把读到的文件最后一位写为0要不然系统会一直寻找到0后才结束

MessageBox(pBuf);//显示读到的数据

fclose(pFile);//关闭文件

文章分享结束,c语言fscanf读取txt文件和c语言fopen打开文件失败的答案你都知道了吗?欢迎再次光临本站哦!

rank函数排序(rank函数三个条件怎么填)c语言代码大全和详细解释(c语言必背100代码)