C 代码在 Linux 编译器中不工作

C code is not working in Linux compiler

下面的代码是关于C中的文件操作。

第一个程序读取文件并将其存储到数组,之后该程序询问用户您想要从文件中获取哪个问题。如果用户输入,“2”程序从文件中获取第二个问题(获取文件中 2 到 3 个数字之间的所有字符)并打印到屏幕上。

我在 Windows 中用 DEV C++ 编译器编写了这段代码。它在 Dev C++ 中工作。

但是 当我在 Linux 终端中尝试此代码时,该代码向用户询问一个整数,但它没有将文件中的结果打印到屏幕上。它没有给出任何错误并且程序关闭

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;

}

有什么建议吗?

您需要将具有 CR/LF 行结尾的文件 'poems.txt' 转换为 Unix 行结尾。这可以通过 'tr' 命令来完成。

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