我在argv中丟失了字符串,我想對它進行排序。我正在用strcmp和strcpy進行排序。從argv排序的值
如何將const char **轉換爲可在我的排序函數中使用的char數組?
void sort(const char** sl, int n) {
char s[n][20], t[20];
int i, j;
for (i = 1; i < n; i++) {
for (j = 1; j < n; j++) {
if (strcmp(s[j - 1], s[j]) > 0) {
strcpy(t, s[j - 1]);
strcpy(s[j - 1], s[j]);
strcpy(s[j], t);
}
}
}
printf("\nStrings in order are : ");
for (i = 0; i < n; i++)
printf("\n%s", s[i]);
}
int main(int argc, const char** argv)
{
sort(argv+1, argc-1);
printf("Files: %i\n", argc-1);
return 0;
}
你有[*未定義行爲*](http://en.wikipedia.org/wiki/Undefined_behavior),因爲你比較了's1'中的字符串和* uninitialized *數組''[j]'。 –
我還沒有比較任何東西,因爲我不知道如何從const char **轉換爲char [] ... – Merl
'sort'中有'strcmp(s [j - 1],s [ j])',當你第一次調用函數'[j]'時會被初始化,導致UB。 –