我通過搜索位和找不到與沒有使用字符串庫的功能,如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