【发布时间】:2014-08-10 16:30:58
【问题描述】:
我正在尝试按字母顺序对二维数组中的每一行进行排序。 我正在从一个文件中读取,我可以做到这一点:
int n_char = 0;
int charCount = 0, wordCount = 0, lineCount = 0;
int wordsPerLine[100];
char buffer;
char words[50][75];
wordsPerLine[0] = 0;
while( (n_char = read(fileDescriptor, &buffer, sizeof(char))) != 0) {
if (buffer == '\n' || buffer == ' ') {
words[wordCount][charCount] = '\0';
charCount = 0;
wordCount++;
wordsPerLine[lineCount] += 1;
if (buffer == '\n') {
lineCount++;
wordsPerLine[lineCount] = 0;
}
} else {
words[wordCount][charCount++] = buffer;
}
}
所有的单词和行都读得很好,但是现在我在对行进行排序时遇到了问题。我知道每行有多少个单词,也知道数组中有多少行,所以现在我正在对所有单词进行计数,并注意新行的第一个单词。我的问题是如何对所有行进行排序?
到目前为止,我只有这个:
int runningSize = 0;
for(i = 0; i < lineCount; i++) {
printf("%d\n", runningSize);
printf("\t%s\n", words[runningSize]);
runningSize += wordsPerLine[i];
}
如果不清楚,这里有一个例子:
输入:
hello world
goodbye world
elephants are really cool
预期输出:
elephants are really cool
goodbye world
hello world
【问题讨论】:
-
您的问题应该是:如何对多行字符串进行排序.... 2-你关心你的排序是否稳定?
-
是的,你是对的——我的措辞肯定是错误的。而且它不一定要稳定,我只想要线条排序哈哈。
-
好吧,这更清楚了,大卫有一个很好的解决方案给你:)
标签: c arrays sorting multidimensional-array