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
下面的代码是关于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