我有一个这样的输入文件:
1 2 2 Medium
1 2 0 Medium
2 1 0 Medium
2 0 2 Medium
我正在使用 fscanf() 读取整数值,并且工作正常。有谁知道如何读取字符串并将其放入字符串变量中???
int x,y,z;
char* cs;
fscanf(fp3,"%d",&x);
fscanf(fp3,"%d",&y);
fscanf(fp3,"%d",&z);
fscanf(fp3,"%s",&cs);
您需要已经分配的空间来存储字符串。尝试这样的事情:
int x,y,z;
char cs[20];
fscanf(fp3,"%d",&x);
fscanf(fp3,"%d",&y);
fscanf(fp3,"%d",&z);
fscanf(fp3,"%19s",cs);
您还可以一次扫描所有值:
fscanf(fp3,"%d %d %d %19s", &x, &y, &z, cs);
注意:始终%<length>s
在 scanf 模式中使用以防止缓冲区溢出。
2话想说:
这是一些代码:
int a,b,c;
char str[256];
while(fscanf(fd, "%d %d %d %s ", &a, &b, &c, str) == 4){
//get some coffee
}
这是标准而不是文件结束循环。此外,str
不需要,&
因为它已经是一个指针,不需要像a
,b
或c
. 格式字符串末尾的空格,之后%s
,意味着一旦读取一个空格,它将停止。这样它就不会包含在字符串中str
。
注意两点:
%
和之间减去 1 s
。例如,“%7s”表示 8 字节缓冲区。