当前位置:首页 » 编程语言 » c语言fscanf函数的用法
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言fscanf函数的用法

发布时间: 2022-01-16 07:24:24

⑴ 关于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函数使用

没打看懂你说的什么意思, 只是感觉你写的有个地方有问题,你在往文件中写的时候fprintf(f1,"%d\n",temp);是每个字后面都一个回车, 而在读的时候又按照fscanf(f1,"%d",&temp); 这种没有回车的形式读的 ,当然会出问题了, 我帮着改了一下, 你看下行不...

#include <stdio.h>
#include <stdlib.h>

void main()
{
int i;
char temp;
FILE *f1; // source file (bmp)
if((f1=fopen("write.hex","w"))==NULL)
{
printf("f1 error\n");
exit(0);
}
for (i=0;i<8;i++)
{
temp = i;
fprintf(f1,"%d",temp);
}
fclose(f1);
if((f1=fopen("write.hex","r"))==NULL)
{
printf("f1 error\n");
exit(0);
}
for (i=0;i<100;i++)
fscanf(f1,"%d",&temp);
fclose(f1);
}

⑶ 关于C语言中fscanf()函数如何读入文件中下一行的数据!!

错误
1.你的文件里的逗号是中文字符,
2.char * Non_H_atom[7];
这你只是定义了一个字串指针,没有分配空间,
如你要使用就要先分配空间给他,除了刚定义时可以直接赋值。
如char * Non_H_atom[7]={"aa","bb",....;}

改成
#include<stdio.h>
#include<string.h>

int main()
{ int Comp_Name;
int Ring_Num;
int N_H_Num;
int i;
FILE * fp;
int Bond_Num;
char *Non_H_atom[7];

if((fp=fopen("inoutdat.txt","r"))== NULL)
{ printf("Cannot open file.\n");
exit(0);
}
fscanf(fp,"%d,%d,%d",&Comp_Name,&N_H_Num,&Ring_Num);
printf("%d, %d, %d\n",Comp_Name,N_H_Num,Ring_Num);

Bond_Num=Ring_Num+N_H_Num-1;
printf("Bond_Num=%d\n",Bond_Num);

for(i = 0;i<N_H_Num;i++)
{
Non_H_atom[i]=(char *)malloc(5);
fscanf(fp,"%s,",Non_H_atom[i]);
}

for(i = 0;i<N_H_Num;i++)
{ printf("%s",Non_H_atom[i]);
free(Non_H_atom[i]);
}

fclose(fp);
system("pause");
}

⑷ C语言中fscanf()函数

fscanf(stdin,"%s%s%s",&s1,&s2,&s3);
C语言中输入数据,都是要加取地址符的亲……

⑸ C语言中fscanf函数的问题

当然会造成隐患 这只能说明 运气好 后面的内存 访问不会出错
有时候程序遇到 这种情况会直接结束 一点错都不报给你 找BUG找到你头大。

⑹ 请问C语言fscanf的用法

函数名: fscanf

功 能: 从一个流中执行格式化输入
用 法: int fscanf(FILE *stream, char *format[,argument...]);

程序例:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int i;
printf("Input an integer: ");
/* read an integer from the
standard input stream */
if (fscanf(stdin, "%d", &i))
printf("The integer read was: %i\n",
i);
else
{
fprintf(stderr, "Error reading an \
integer from stdin.\n");
exit(1);
}
return 0;
}

⑺ c语言中的fscanf()函数

fprintf(fp,"%s,%c,%d,%f",str,a, c, b); 这个输出格式表明 你的文件1.txt 里的数据 是用 逗号 分 隔。
if((fp = fopen("1.txt","r"))==NULL) 你要打开 读 这个 用 逗号为 分隔符 的文件。

fscanf(fp,"%s,%c,%d,%f", str, &a, &c, &b);
漏写 str, 给你补上,但 这仍不能解决 %s, 的逗号分隔问题。

必须 用下面格式读取逗号分隔的数据:
fscanf(fp,"%[^,],%c,%d,%f", str, &a, &c, &b);
======================================

假如文件里的数据 用 空白 分隔,不用 逗号,日子就好过得多:
fprintf(fp,"%s %c %d %f",str,a, c, b);
fscanf(fp,"%s %c %d %f", str, &a, &c, &b);

⑻ c语言fscanf用法

#include<stdio.h>
#include<stdlib.h>
intmain()
{
FILE*fp;
intid;
charstu;
if((fp=fopen("c:/stu.txt","w+"))==NULL)
{
printf("打开文件,出现错误");
exit(1);
}
scanf("%d%s",&id,&stu);
fprintf(fp,"%d %s",id,&stu);
id=0;
stu=0;
rewind(fp);//写完之后不能马上读,需要重置fp到文件头
fscanf(fp,"%d%s",&id,&stu);//少了&
printf("%d %s",id,stu);
return0;
}

⑼ fscanf的用法

fscanf

简述:C语言中基本的文件操作

函数名:fscanf

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

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

用法:

FILE *stream:文件指针

char *format:格式字符串

[argument...]:输入列表

格式字符说明

常用基本参数对照:

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

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

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

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

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

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

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

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

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

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

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

示例说明

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

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