Как получить float из файла, используя getc() в C?

У меня есть файл с ";" в качестве разделителя я хочу получить некоторые символы и сохранить их как float, я придумал что-то вроде этого:

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

1 ответ

Решение

Правильное использование getc, это int getc(FILE *stream), Таким образом, вы должны предоставить stream из которого это читает.

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

неправильно. Второй параметр для strcpy должен быть нулевым char массив.

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

или даже лучшеалк предложил

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

Что касается входной части, вы можете сделать это, хотя:

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

Вместо того, чтобы использовать atof это гораздо лучше использовать strtof или же strtod функции. Они обеспечивают проверку ошибок в отличие от этих ato* функции.

Другие вопросы по тегам