该程序旨在按字母顺序对单词进行排序,无论是输入到其中的单词,还是来自文本文件。它编译得很好,但是当我运行它时,我得到了大量的文本。这是它的一个小例子:
:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
v=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
它有点像一些文件格式或什么的?
后面跟着一句话:
Segmentation fault (core dumped)
我在 Ubuntu 上用 GCC 编译。
该程序是:
#include <stdio.h>
#include <string.h>
#define MO 109 // 109 is ASCII for "m".
#define FO 102 // 102 is ASCII for "f".
#define OO 101 // 101 is ASCII for "e" and denotes an error.
int main() // Main part of program.
{
int i, j; // Counter integer assignment.
int n = 100; // assignment of integer for the number of strings.
char a; // For the m/f (manual or file) option.
char str[100][100]; // Str is the main string to be sorted.
char temp[100]; // Temp is to switch the values for bubble sorting.
for(i = 0; i < 1; a = OO)
{
printf("To input text manually, press m. To sort a file, press f. \n");
// M/f option.
scanf("%c", &a); // Gets m/f option.
if(a == MO || a == FO) // Checks for valid input.
{
i = 2; // Escape from loop with valid input.
}
if(a != MO && a != FO) // Invalid input.
{
printf("Please insert a valid response. ");
i = 0; // Continue loop until a valid input is reached.
}
}
if(a == MO) // Manual insert option.
{
puts("Enter the number of strings to be sorted.");
scanf("%d", &n); // Gets number of strings.
for(i = 0; i <= n; i++)
{
gets(str[i]); // Gets strings from user.
}
}
if(a == FO) // File option.
{
char b[100]; // File address of text file to be sorted.
FILE * f; // Text file.
printf("Enter file path of file to be sorted.");
scanf("%c", b); // Gets file path.
f = fopen(b, "r"); // Opens file.
fgets(*str, 100, f); // Coverts file into string str.
fclose(f); // Closes file.
}
for(i = 0; i <= n; i++) // Begin bubble sort.
{
for(j = i + 1; j <= n; j++)
{
if(strcmp(str[i], str[j]) > 0) // Checks alphabetical value.
{
strcpy(temp, str[i]); // Switch two strings.
strcpy(str[i], str[j]);
strcpy(str[j], temp);
}
}
}
printf("The sorted string:");
for(i = 0; i <= n; i++)
{
puts(str[i]); // Prints final output.
}
return 0; // End of main.
}
谷歌搜索告诉我,分段错误通常意味着我指的是内存中不存在的地方。但我找不到任何关于如何解决它的建议,甚至找不到具体的问题。如果有人可以帮助我解决这个问题,我将不胜感激。谢谢。