읽으려는 행렬을 나타내는 파일에 헤더 행이 있습니다.atoi()를 사용하여 두 개의 정수 값에 대한 행을 읽습니다.
R4 C4
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
내가 원하는 것은이 경우 '4'의 첫 번째 줄을 읽습니다. 그러나 숫자는 임의의 길이 일 수 있습니다 (어느 정도까지).
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);
}
내가 컴파일 얻을 오류가 나는 atoi 함수()가 작동하는 방법이나 이해가 안 돼요
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 함수()'**] (http로를 걸어 행 버퍼에 전체 라인을 읽기 : // en.cppreference.com/w/c/string/byte/strtol), 줄 끝까지 입력을 더 이상 처리 할 수 없을 때까지 각 값을 저장합니다. 끝나면 반환되는 값의 수는'C' 또는 파일 형식이 잘못된 숫자 바로 뒤에 표시됩니다. – WhozCraig