我通过搜索位和找不到与没有使用字符串库的功能,如STRCMP字符的比较,所以希望这个问题不重复。我来自Java,对C语言有点新鲜。我试图比较两个字符串(保存在同一个数组中)以按字母顺序对它们进行排序,但试图在没有C字符串库函数的情况下这样做,并且似乎无法弄清楚这一点。任何人都可以将我指向正确的方向吗?如何比较两个字符串中的字符以按字母顺序排序? (无C串库函数)
for (i = 0; i < TotalStrings; i++) { /* TotalStrings is the number of strings in the array */
if (length[i] < length[i+1]) { /* compares length of both strings, saved in a different array */
for (j = 0; j < length[i]; j++) {
if (Strings[i][j] > Strings[i+1][j]) {
char temp = Strings[i];
Strings[i] = Strings[i+1];
Strings[i+1] = temp;
j = length[i];
}
}
}
if (length[i] > length[i+1]) { /* compares length of both strings, saved in a different array */
for (j = 0; j < length[i+1]; j++) {
if (Strings[i][j] > Strings[i+1][j]) {
char temp = Strings[i];
Strings[i] = Strings[i+1];
Strings[i+1] = temp;
j = length[i];
}
}
}
行if(Strings [i] [j]> Strings [i + 1] [j])是卡住的地方。正如我已经教过的,二维数组中的第一个支架包含字符串,第二个支架指向字符?我不确定如何去比较这些字符串的字符。很确定,试图做到这一点,因为我(像我会数字)关闭。
另外,不知道这是否与我上面的代码有关(由于它未完成或因为temp是char类型而Strings是char类型的二维数组;但是我得到一个指向equals的错误登录下面的语句:
error: incompatible types when assigning to type 'char[1000]' from type 'char'
Strings[i+1] = temp;
编辑:在我的代码现在看,我可以看到一个巨大的缺陷,它会在字符串相同指数在运行到一个字[X]进来后性格字符串[X + 1],然后更改字符串一起;这是不对的,我会改变我的代码来纠正,但我仍然不知道如果我比较字符以正确的方式
是否允许*非字符串*函数?如'qsort()'。如果他们是,那可能会让你更容易(虽然授予,'qsort()'可能会令人困惑)。 – 2015-02-10 01:54:27
另外,我们可以看看你如何声明'字符串? – 2015-02-10 01:57:26
@TimČas我将Strings声明为'Char Strings [TotalStrings] [MaxLength]'。非字符串函数没有问题,但我正试图学习如何编写一个循环来检查每个单独的字符(如果有必要) – newJavaUser 2015-02-10 02:02:03