[问题] fscanf读入csv档的问题

楼主: JiGo (ㄐㄍ)   2019-05-16 09:06:07
开发平台(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内的变量前面也要加&呢?
如果没有加&的话就不会输出......
作者: Lipraxde (Lipraxde)   2019-05-16 09:20:00
'char'是不同的'char *'。'char'是字符,用来存1个 byte;'char *'是指向字符的指标,可以用来指向一个字符阵列当字串用
作者: RishYang (Rish)   2019-05-16 19:47:00
你可能需要初学教材,找本书或是网络资源
作者: ab830921 (Stitch)   2019-06-15 12:03:00
买本书吧,基本概念先懂比较好喔

Links booklink

Contact Us: admin [ a t ] ucptt.com