我有一个带“;”的文件作为一个分隔符,我想得到一些字符并将它们保存为浮点数,我想出了类似的东西:
int c;
char help[10];
float x;
while(getc(c)!=';'){
strcpy(help, c);
}
float = atof(help);
答案 0 :(得分:2)
正确使用getc
。它是int getc(FILE *stream)
。所以你需要提供它所读取的stream
。
while(getc(c)!=';'){ <-- wrong
strcpy(help, c); <-- wrong
...
错了。 strcpy
的第二个参数应该是nul termnated char
数组。
char cs[]={c,0}
strcpy(help,cs);
甚至更好 alk建议
{strcpy(help, (char[2]){c});}
关于输入部分,您可以这样做:
while((c=getc(stdin))!=';'){
...
使用atof
或strtof
函数更好,而不是使用strtod
。它们提供错误检查,与这些ato*
函数不同。