菜鸟之问:关于字符串的排序
目的:将五个字符串由大到小排序#include<stdio.h>
#include<string.h>
void fsort(char cname[], int n)
{
int j, k;
char *t=&cname;
for (k = 1;k < n;k++) {
for(j=0;j<n-k;j++){
if(cname>cname){
t = cname;
cname = cname;//编译器提示这里只能修改左值(一脸懵逼)
cname = t;
}
}
}
}
void main()
{
int i;
char cname = { "wang","li","zhang","jin","xian" };
fsort(cname, 5);
for (i = 0;i < 5;i++) {
printf("%s\n", cname);
}
}
各位大佬帮帮忙啊,看看什么问题啊{:10_266:} 本帖最后由 sunrise085 于 2020-5-14 15:33 编辑
字符串操作就要用字符串函数,你已经导入 string.h 文件了,为什么不用相关库函数?
你所说的那一行的错误是因为字符串不能这样赋值,因为你没有重载'='运算符用于字符串赋值
#include<stdio.h>
#include<string.h>
void fsort(char cname[], int n)
{
int j, k;
char t;
for (k = 1;k < n;k++) {
for(j=0;j<n-k;j++){
if(strcmp(cname , cname)>0){ //字符串大小比较
strcpy(t , cname); //字符串拷贝赋值
strcpy(cname , cname);
strcpy(cname , t);
}
}
}
}
void main()
{
int i;
char cname = { "wang","li","zhang","jin","xian" };
fsort(cname, 5);
for (i = 0;i < 5;i++) {
printf("%s\n", cname);
}
} sunrise085 发表于 2020-5-14 15:30
字符串操作就要用字符串函数,你已经导入 string.h 文件了,为什么不用相关库函数?
你所说的那一行的错误 ...
嗯,我一开始想用的strcpy来实现交换,后来又试了下直接用‘=’,然后编译器就报错了,网上查完左值,看的我晕乎乎,‘左值’到底是个什么鬼?不包括数组嘛?_(:з」∠)_
页:
[1]