2017-12-23 11 views
-3

아래 코드는 파일 조작이 이고 코드 작업이입니다.리눅스 컴파일러에서 C 코드가 작동하지 않습니다.

첫 번째 프로그램은 파일을 읽고 사용자가 파일에서 원하는 질문을 묻는 후 해당 프로그램을 배열에 저장합니다. 사용자가 입력하면 "2"프로그램은 파일에서 두 번째 질문을하고 (파일에서 2와 3 사이의 모든 문자를 가져 와서) 화면에 인쇄합니다.

이 코드는 Windows의 DEV C++ 컴파일러에 작성했습니다. Dev C++에서 작동합니다.

그러나 리눅스 터미널에서이 코드를 시도하면 코드는 사용자에게 정수를 묻습니다. 그러나 파일의 결과를 화면에 출력하지 않습니다. 오류가 발생하지 않으며 프로그램이 종료됩니다 ().

FILE* file = fopen("txt", "r"); 
char line[256]; 
char a[10][14]; 
char getIndex[2]; 
char firstIndex[2]; 
char secondIndex[2]; 
int firstIndexNum; 
int secondIndexNum; 

printf("Please enter number:"); 
fgets (getIndex, 100, stdin); 
strcpy(firstIndex,getIndex); 

firstIndexNum = atoi(firstIndex); 

secondIndexNum = firstIndexNum + 1; 

sprintf(secondIndex, "%d", secondIndexNum); 


int i = 0; 
while (fgets(line, sizeof(line), file)) { 
    strcpy(a[i],line); 
    i++; 
} 
int sizeArray = sizeof(a)/sizeof(a[0]); 
for(int i=1;i<=sizeArray;i++){ 
    if(strstr(a[i-1], firstIndex) != NULL){ 
     while(strstr(a[i], secondIndex) == NULL){ 
      printf("%s",a[i]); 
      i++; 
     } 
    } 

} 
fclose(file); 
return 0; 

}

어떤 제안이?

+0

Linux에서 프로그램이 어떻게 진행됩니까? –

답변

1

CR/LF 라인 끝이있는 'poems.txt'파일을 Unix 라인 끝으로 변환해야합니다. 이것은 'tr'명령으로 수행 할 수 있습니다.

tr -d '\r' <input.file> output.file 
+0

내 문제가 해결되었습니다! 고맙습니다. :))))) – user9134929

+2

@ user9134929 : 이것이 문제 해결에 충분하다는 것이 놀랍습니다. 그러나 [user3121023] (https://stackoverflow.com/users/3121023/user3121023)의 주석에서 확인 된 문제는 코드가 매우 취약하다는 것을 의미합니다. 대부분의 경우 해당 문제를 해결하지 않으면 여전히 매우 손상되어 있습니다. 너무. –

+1

문제는 없지만 변환을 통해 문제가 해결 된 이유를 알고 있습니까? – svujic