作者JiGo (ㄐㄍ)
看板C_and_CPP
标题[问题] fscanf读入csv档的问题
时间Thu May 16 09:06:07 2019
开发平台(Platform): (Ex: Win10, Linux, ...)
Win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
Code::Block 16.01
C语言
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
我的csv档内资料是 型号 x尺寸 y尺寸 z尺寸
如果利用fscanf读入的第一个资料型态为%s
後面所有的资料都会变成第一个字串里的资料
喂入的资料(Input):
型号,x,y,z
F,100,100,50
#1,130,130,60
#4,172,133,60
G,135,100,60
#263,100,61,61
H,130,125,65
预期的正确结果(Expected Output):
型号、x、y、z都可以顺利存入个别的变数中并输出
F,100,100,50
#1,130,130,60
#4,172,133,60
G,135,100,60
#263,100,61,61
H,130,125,65
错误结果(Wrong Output):
F,100,100,50,6422260,6422264,6422268
#1,130,130,60,6422260,6422264,6422268
#4,172,133,60,6422260,6422264,6422268
G,135,100,60,6422260,6422264,6422268
#263,100,61,61,6422260,6422264,6422268
H,130,125,65,6422260,6422264,6422268
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
int main(){
char BOX_name;
int x_size, y_size, z_size;
FILE *Box01 = fopen("001.csv", "r");
if(Box01 == NULL){
perror(" File open failed: ");
exit(0);
}
else
puts("....File opened....");
printf("OK!\n");
while(!feof(Box01)) {
fscanf(Box01, " %s,%d,%d,%d", &BOX_name, &x_size, &y_size, &z_size);
printf("%s,%d,%d,%d\n", &BOX_name, &x_size, &y_size, &z_size);
}
fclose(Box01);
return 0;
}
补充说明(Supplement):
另外不懂的地方是
为什麽连输出printf内的变数前面也要加&呢?
如果没有加&的话就不会输出......
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 163.24.85.97
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1557968780.A.F21.html
※ 编辑: JiGo (163.24.85.97), 05/16/2019 09:08:25
1F:→ Lipraxde: 'char'是不同的'char *'。'char'是字元,用来存1个 byt 05/16 09:20
2F:→ Lipraxde: e;'char *'是指向字元的指标,可以用来指向一个字元阵 05/16 09:20
3F:→ Lipraxde: 列当字串用 05/16 09:20
4F:→ RishYang: 你可能需要初学教材,找本书或是网路资源 05/16 19:47
5F:→ ab830921: 买本书吧,基本概念先懂比较好喔 06/15 12:03