當前位置:成語大全網 - 新華字典 - c語言怎麽不用strcmp按字典順序對多個字符串排序

c語言怎麽不用strcmp按字典順序對多個字符串排序

自己做strcmp和strcpy子函數,或者把能實現相同功能的子函數模塊用for循環來處理

strcmp子函數的功能是比較str1和str1字符串的每個字符

用壹個for循環來實現這個功能的

功能實現,模擬著函數

void

mystrcmp(char

*str1,char

*str2)

{

int

i;

for(i=0;str1[i]||str2[i];i++)

if(str1[i]<str2[i])

retrun

-1;

else

if(str1[i]>str2[i])

return

1;

return

0;

}

strcpy拷貝子函數也是用壹個for循環來實現的

void

mystrcpy(char

*str1,char

*str2)

{

int

i=0;

while(str1[i]=str2[i])

i++;

}

妳完全可以把這個功能模塊用著相應的位置

for(i=0;i<n-1;i++)

{

for(j=i+1;j<n;j++)

{

排序大循環沒問題

for(;k<l;k++)

{

if(*(str[i]+k)!=*(str[j]+k))

//妳這裏只是判斷了不相等的情況,大小沒有判斷

這壹塊應該是比較部分吧,感覺應該不對

應該是

for(k=0;str[i][k]||str[j][k];k++)

{

if(str[i][k]>str[j][k])

//也可以用指針,大了就交換,小了或等於不交換

交換代碼

}

l=min(strlen(str[i]),strlen(str[j]));

這壹句完全可以用l=strlen(str[i])>strlen(str[j])?strlen(str[i]):strlen(str[j]);

不用子函數,或者壹個if--else來解決

temp=str[j];

str[j]=str[i];

str[i]=temp;

這是交換的代碼,字符串不能這麽交換,可以用strcpy拷貝函數,或者字符壹個壹個的交換

不能整個字符串用=來賦值