c语言:strcmp在二维数组中应该怎么用?
发布网友
发布时间:2023-03-26 19:09
我来回答
共2个回答
热心网友
时间:2023-10-21 22:22
把
{
t=str[j];
str[j]=str[j+1];
str[j+1]=t;
}
改为
{
strcpy(t, str[j]);
strcpy(str[j],str[j+1]);
strcpy(str[j+1], t);
}
应该可以了,其他地方没看
--------------------------------------华丽分割线-----------------------------------
把char *t改为字符数组 char t[50];
你复制下面的代码运行一下~
#define N 5
#include<string.h>
#include<stdio.h>
void main()
{
int i,j;
char t[100];
char str[][20]={"monitor","landscape","paddle","partition","current"};
for(i=1;i<N;i++)
for(j=0;j<N-i;j++)
if(strcmp(str[j],str[j+1])>0)
{
strcpy(t, str[j]);
strcpy(str[j],str[j+1]);
strcpy(str[j+1], t);
}
for(i=0;i<N;i++)
printf("\n%s",str[i]);
}追问能告诉我,我哪个错在哪里吗?
追答你原来代码中的
{
t=str[j];
str[j]=str[j+1];
str[j+1]=t;
}
t、str[j]、str[j+1]这些都是指针,你这段代码中交换的只是指针的值,并没有对字符串进行实质的交换(自己再慢慢理解一下)~
接下来我第一次修改的时候忘了把char *t改为字符数组char t[50]; 所以出现访问非法内存错误。
改成char t[50]后系统分配了一块char t[50]大小的内存供使用,所以就不会出现访问非法内存的错误
热心网友
时间:2023-10-21 22:23
t=str[j];
str[j]=str[j+1];
str[j+1]=t;
t,str都是字符串,不能用=等号赋值,只能用strcpy赋值追问两个都是指针变量啊????、怎么就不可以用赋值符号了呢????????、、