У меня есть строка заголовка в файле, представляющая матрицу, которую я хочу прочитать, например.
R4 C4
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Что я хочу сделать, так это прочитать первую строку для «4» в этом случае. Но числа могут быть произвольной длины (до некоторой степени). После некоторых поисков я обнаружил, что atoi() может помочь (возможно):
int main ()
{
FILE * pFile;
FILE * pFile2;
pFile = fopen ("A.txt","r");
pFile2 = fopen ("B.txt","r");
char c;
int lincount = 0;
int rows;
int columns;
if (pFile == NULL) perror ("Error opening file");
else{
while ((c = fgetc(pFile)) != '\n')
{
if(c == 'R'){
c = fgetc(pFile);
rows = atoi(c);
}
if(c == 'C'){
c = fgetc(pFile);
columns = atoi(c);
break;
}
}
lincount++;
printf("Rows is %d and Columns is %d\n", rows, columns);
}
Ошибка, которую я получаю при компиляции,
warning: passing argument 1 of ‘atoi’ makes pointer from integer without a cast
[enabled by default]
/usr/include/stdlib.h:148:12: note: expected ‘const char *’ but argument is of type
‘char’
Я не понимаю, как работает atoi() или как это исправить, и документация мне не помогает, потому что я не понимаю из примеров, которые я нашел, как ввод atoi() может быть указателем, поскольку кажется, они просто вводят символы в примерах.
strtol()
< /b>, сохраняя каждое значение до тех пор, пока вы не дойдете до конца строки и не сможете больше обрабатывать ввод. Когда закончите, число возвращаемых значений должно быть числом сразу послеC
, иначе ваш файл имеет неправильный формат. - person WhozCraig   schedule 16.09.2014