문제

#include <stdio.h>
#include <stdlib.h>

int main() 
{
     FILE *fp = fopen("lr.txt", "r");
     fseek(fp, 0L, SEEK_END);
     int size = ftell(fp);
     fseek(fp, 0L, SEEK_SET);

     char *lorem_ipsum;

     int i = 0;
     lorem_ipsum = (char*) malloc(sizeof(char) * size);
     while(fscanf(fp, "%s\n", lorem_ipsum) != EOF)
     {
      printf("%s", lorem_ipsum[i]);
      i++;

     }
     fclose(fp);
     return 0;
}

그러나이 프로그램은 컴파일되고 실행되었지만, 일어난 일은 내가 Segfault를 얻었고이 프로그램에 무엇이 잘못되었는지 정확히 알지 못한다는 것이 었습니다. 누군가 내가 얻은 포인터 오류로 나를 도울 수 있습니까?

도움이 되었습니까?

해결책

당신은 인쇄하려고합니다 lorem_ipsum[i] 마치 문자열 인 것처럼. lorem_ipsum 문자열입니다 lorem_ipsum[i] 캐릭터 일뿐입니다.

segfault는 printf가 캐릭터의 가치를 봅니다. lorem_ipsum[i] char* 포인터 (문자열)로 해석합니다. 당연히 문자의 값은 유효하고 할당 된 메모리 주소에 해당하지 않습니다.

다른 팁

당신은 지나가고 있습니다 char (lorem_ipsum[i]) 로 fscanf a char* 논쟁으로.

사용하고 싶을 수도 있습니다 lorem_ipsum 또는 lorem_ipsum+i 당신이 정말로 먼저 제거하고 싶다면 i 캐릭터 꺼짐.

For Loop에서 무엇을하려고하는지 설명 할 수 있습니까?

파일을 라인별로 읽은 다음 줄을 인쇄하려고하는 것 같습니다. 그러나 printf ( "%s", lorem_ipsum [i])를 할 때 문자열이 아닌 문자를 보내는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top