在C文件读取中怎样消去空格和回车?
文件中的内容
XXX 1201 安徽
XXX 1202 甘肃
XXX 1204 陕西
XXX 1203 广西
数据结构
struct Roommate{
char name[6];
char NO[8];
char addr[10];
}Rm[4];
核心代码
while(!feof(fp)){
fscanf(fp,"%s%s%s",Rm[i].name,Rm[i].NO,Rm[i].addr)
cout<<Rm[i].name<<" "<<Rm[i].NO<<" "<<Rm[i].addr<<endl;
}
这样读出来的结果是错的,请问scanf该怎样读取数据,使得它不受空格和回车的干扰?
[解决办法]
你说的不是scanf吧是fscanf吧。其实你可以读入的是“%s %s %s/n”也就是自己手动加上空格和回车就行了。
不过我没试过,我文件操作一直都是c++的方法,你试试看吧
[解决办法]
while(!feof(fp)){
fscanf(fp,"%s%s%s",Rm[i].name,Rm[i].NO,Rm[i].addr)
cout<<Rm[i].name<<" "<<Rm[i].NO<<" "<<Rm[i].addr<<endl;
}
错的太典型了。
[解决办法]
第一种方法:使用位域限制读取的长度
第二种:可以直接按照结构体来读写,实例代码如下:
#include "stdafx.h"#include <cstdio>#include <cstdlib>#include <cstring>struct Roommate{char name[6];char NO[8];char addr[10];};int _tmain(int argc, _TCHAR* argv[]){ struct Roommate Rom[2] = {0}; FILE *file = NULL; if(!(file = fopen("a.txt", "w"))) { printf("Create File failed!\n"); exit(-1); } printf("Please input four times Roommate data: Name NO Addr\n"); for(int i=0; i<2; ++i) { scanf("%s%s%s", Rom[0].name, Rom[0].NO, Rom[0].addr); fwrite((const void *)&Rom[0], sizeof(struct Roommate), 1, file); } fclose(file); /* Read from file*/ file = NULL; if(!(file = fopen("a.txt", "r"))) { printf("Create File failed!\n"); exit(-1); } printf("Read from the file: Name NO Addr\n"); fread((void *)Rom, sizeof(struct Roommate), 2, file); for(int i=0; i<2; ++i) { printf("i=%d Name:%s\tNO:%s\tAddr:%s\n", i, Rom[i].name, Rom[i].NO, Rom[i].addr); } fclose(file); while(getchar()) ; return 0;}
[解决办法]
fread()....
[解决办法]