2017-12-09 24 views
0

내 코드를 실행하려고하지만이 호환되지 않는 경고가 나타나는 것 같습니다. 경고 : 'FILE *'(일명 'struct __sFILE *') 유형의 매개 변수에 'char *'을 전달하는 호환되지 않는 포인터 유형

int Read_Data_File(void) 
{ 
    FILE *ptr_file; 
    char *end = "0.0.0.0 none"; 
    char *buf; 
    int endLoop = 0; 

    ptr_file = fopen("CS222_Inet.txt", "r"); 


    if (!ptr_file) 
     return 1; 

    int i = 0; 

    while (!feof(ptr_file)){ 
     addr[i]=(struct address_t *)malloc(sizeof(struct address_t)); 
     fscanf(ptr_file,"%s",buf); 
     if(!(strcmp(buf, end) == 0)){ 
      fscanf(buf,"%d %d %d %d %s", &addr[i]->IP1, &addr[i]->IP2, &addr[i]->IP3, &addr[i]->IP4, addr[i]->name); 
      n++; 
     } 
     i++; 
    } 

    fclose(ptr_file); 
    return 0; 
} 

enter code here 

는이 프로그램이 파일을 읽고도 내 버피 포인터로 내 구조 유형을 저장할.

경고 출력 : project.c : 65 : 11 : 경고 '숯 *'를 통과 호환 포인터 타입 '파일 *'(일명 '구조체 __sFILE *') [-Wincompatible - 포인터 타입 타입 파라미터 행 형식] fscanf (buf, "% d % d % d % d % s", & addr [i] -> IP1, & 추가 ... ^ ~/응용 프로그램/Xcode.app/Contents/Developer/ 플랫폼/MacOSX.platform/개발자/SDKs/MacOSX10.12.sdk/usr/include/stdio.h : 250 : 30 : 참고 : 인수를 여기에 매개 변수로 전달 int fscanf (FILE * __restrict, const char * __restrict,. ..) __scanf ... ^

+1

오류가 정확히 표시됩니다. 두 번째'fscanf' 첫 번째 인수는 파일이 아니며 'buf'입니다. 또한 Google은 "while (! feof())은 항상 잘못되었습니다." –

답변

0

다음과 같이 오류 메시지가 표시됩니다. fscanf은 첫 번째 인수가 FILE *이 될 것으로 예상하지만 문자 버퍼는 전달합니다. scanf 패밀리를 사용하여 문자 버퍼를 구문 분석하려면 sscanf

+0

나는 실제로 sscanf를 시험해 보았다. 인터페이스에있는 버스 출력은 다음과 같다. 10. 그게 무슨 뜻 인지도 모른다. 그걸 도와 줄 수있어? – brian012

+0

buf를 char 포인터로 선언했지만 메모리를 할당하지 않았기 때문에 가능합니다. buf를 char 배열로 만들거나 malloc을 사용하여 동적으로 메모리를 할당하고 buf가 그것을 가리 키도록하십시오 (나중에 적절히 해제해야합니다) – Kyrill