파일에서 정수를 읽는 코드입니다. 동일한 코드를 사용하여 다른 파일 에서 double을 읽었으며 완벽하게 작동했지만 이번에는 루프가 무한대로 바뀌 었습니다. 뭐가 될 수 있니? 제가 읽은 파일 은 프로그램에 의해 작성되었습니다, 그럴 수 있습니까? 나는 모른다. 이것은 무엇을 의미 하나 내 OS는 파일이 바이너리라고 말합니다. 글쎄, 어떤 도움을 주시면 감사하겠습니다. 감사. 당신의 파일을 읽을 수없는 바이너리 형식 scanf
에있는 경우C에서 파일 읽기
i=1;
cadeia = malloc (i * sizeof(int));
if (!cadeia){ //Avalia se a alocação de memória foi bem sucedida
printf("Problema na alocação de memória para cadeia.");
exit(0);
}
while (!feof(arq_cadeia)){ /*Fazendo leitura e alocação de memória da matriz de transição*/
fscanf (arq_cadeia , "%d" , (cadeia+i-1));
i++;
cadeia = realloc (cadeia , i * sizeof(int));
if (!cadeia){ //Avalia se a alocação de memória foi bem sucedida
printf("Problema na alocação de memória para cadeia.");
exit(0);
}
printf("%d\n", *(cadeia+i-1));
}
'fscanf'의 결과를 확인하고 1과 같아야합니다. –
'while (! feof (arq_cadeia))'에 대해서'feof'가 참이된다는 것에주의하십시오. 파일 끝. 당신의 루프에서'fscanf'의 반환 값을 확인하십시오. 유효하지 않은 입력을 발견하면 스트림에 남아 있고 모든 후속 스캔은 실패합니다. –
여기에있는 문제와 관련이 없지만 버퍼를 더 큰 단위로 할당하고, 청크를 미리 할당하고, 청크에 realloc을 추가로해야하는 경우를 고려해야합니다. – pstrjds