【问题标题】:How to get float from file using getc() in C?如何在 C 中使用 getc() 从文件中获取浮点数?
【发布时间】:2018-07-06 15:48:04
【问题描述】:

我有一个带有“;”的文件作为分隔符,我想获取一些字符并将它们保存为浮点数,我想出了这样的东西:

int c;
char help[10];
float x;
while(getc(c)!=';'){
strcpy(help, c);
}
float = atof(help);

【问题讨论】:

  • “这个”有什么问题(如果有的话)?
  • 你为什么不使用fscanf()

标签: c char type-conversion int getc


【解决方案1】:

getc 的正确用法。它是int getc(FILE *stream)。所以你需要提供它从中读取的stream

while(getc(c)!=';'){ <-- wrong
   strcpy(help, c);  <-- wrong
   ...

错了。 strcpy 的第二个参数应该是一个以 nul 结尾的 char 数组。

char cs[]={c,0}
strcpy(help,cs);

甚至更好建议

{strcpy(help, (char[2]){c});}

关于输入部分,您可以这样做:

 while((c=getc(stdin))!=';'){ 
   ...

使用strtofstrtod 函数要好得多,而不是使用atof。它们提供与ato* 函数不同的错误检查。

【讨论】:

  • 我更喜欢使用{ strcpy(help, (char[2]){c}); } :-)
  • 注意语句周围的花括号以限制复合文字的生命周期。
  • @alk.: 问题是我早期的解决方案也利用了花括号......是的,我明白了。如果我不说……那么它的寿命将取决于最近的封闭块的寿命。
  • 它们提供扩展的错误检查。”只有那些函数提供完整的错误检查。
  • @alk.: 是的……这些根本不提供。
猜你喜欢
  • 2020-09-21
  • 1970-01-01
  • 2017-10-17
  • 1970-01-01
  • 1970-01-01
  • 2021-03-09
  • 2015-12-16
  • 2021-10-19
  • 1970-01-01
相关资源
最近更新 更多