2017-10-10 3 views
-3
#include <stdio.h> 
#include <stdlib.h> 

struct fileIndex{ 
    char name; 
    int key; 
} index1; 

int main(int argc, char *argv[]){ 

    int i; 
    FILE *pFile; 

    pFile= fopen("cat/home/sysadmin/deneme.txt","r"); 



    for(i=0; i<10; i++){ 
     printf("%c",fgetc(pFile)); 
    } 
    fclose(pFile); 

} 

내 프로그램을 실행하려고하면 오류가 발생합니다. 코드에서 잘못된 줄을 너무 오래 보았지만 아무 것도 찾지 못했습니다. 나 좀 도와 줄 수있어?리눅스에서의 C- 분할 오류 (코어 덤프) 오류

+0

코드를 들여 씁니다. 그리고 적어도 fopen과 같은 오류가 발생하기 쉬운 함수의 반환 값을 확인하십시오. –

+0

'fopen'이 아니라''popen' (http://man7.org/linux/man-pages/man3/popen.3.html) 함수를 원한다고 생각합니다. 그런 다음 명령 ('cat')과 인수 사이에 공백을 추가하십시오. –

+1

이 경로 ('cat/home/sysadmin/deneme.txt')가 맞습니까? 나는 당신이'/ home/sysadmin/deneme.txt'을 의미한다고 생각합니다. –

답변

3

파일을 열지 못하면 pFileNULL과 같아 지므로 쉽게 fgetc()이 segfault가 될 수 있습니다.

당신은 파일에서 읽을하기 전에이 있는지 확인해야합니다 또한

int i; 
FILE *pFile; 

pFile= fopen("cat/home/sysadmin/deneme.txt","r"); 

if(!pFile) 
    return; 

같은 코드가 .. 당신이 경로가 잘못이다 파일과 같은 ...이다

if (pfile == NULL) 
{ 
    perror("Failed to open file"); 
    exit(1); 
} 
+0

이게 내 문제를 해결했습니다. 고마워요. –

+1

'perror' 또는'strerror (errno)'사용 –

+0

@BasileStarynkevitch 오, 과잉 공격! 물론, 왜 안 : :) – unwind

1

변경하여 의미는 /cat/home/sysadmin/deneme.txt

cat 현재 디렉토리 또는 절대 경로 부분

+1

'fopen' 실패시'perror'를 사용하십시오 –