为什么我的代码没有给我正确的结果
Why is my code not giving me correct results
我有这段代码应该在字符串数组中的两个连续字符串之间交换。
我得到这个输出:
adf
nmmmmmmm
gh
11kk%$#
abcd
它应该给我这个输出
adf
nmmmmmmmMMMMMM
gh
11kk%$#
abcd
这是我的代码:
#include <stdio.h>
void swap( char **t1,char **t2)
{
char *t;
t = *t1;
*t1 = *t2;
*t2 =t;
}
int main() {
char array[][21]={"abcd","adf","nmmmmmmmMMMMMM","gh","11kk%$#"};
for(int i=0;i<4;i++){
swap(&array[i],&array[i+1]);
}
for(int i=0;i<5;i++){
printf("%s\n",array[i]);
}
return 0;
}
有人知道为什么吗?
函数声明和调用不正确。
在本次通话中
swap(&array[i],&array[i+1]);
参数的类型为 char ( * )[21]
,而函数参数的类型为 char **
。并且没有从一种类型到另一种类型的隐式转换。
您需要的是通过使用标准 C 字符串函数交换字符数组的内容来交换字符串 strcpy
。
函数可以通过以下方式声明和定义
#include <string.h>
//...
enum { N = 21 };
void swap( char *t1, char *t2 )
{
char t[N];
strcpy( t, t1 );
strcpy( t1, t2 );
strcpy( t2, t );
}
函数应该像
那样调用
swap( array[i], array[i+1]);
这是一个演示程序。
#include <stdio.h>
#include <string.h>
enum { N = 21 };
void swap( char *t1, char *t2 )
{
char t[N];
strcpy( t, t1 );
strcpy( t1, t2 );
strcpy( t2, t );
}
int main(void)
{
char array[][N] = { "abcd", "adf", "nmmmmmmmMMMMMM", "gh", "11kk%$#" };
for(int i=0;i<4;i++){
swap( array[i], array[i+1] );
}
for(int i=0;i<5;i++){
puts( array[i] );
}
return 0;
}
程序输出为
adf
nmmmmmmmMMMMMM
gh
11kk%$#
abcd
我有这段代码应该在字符串数组中的两个连续字符串之间交换。 我得到这个输出:
adf
nmmmmmmm
gh
11kk%$#
abcd
它应该给我这个输出
adf
nmmmmmmmMMMMMM
gh
11kk%$#
abcd
这是我的代码:
#include <stdio.h>
void swap( char **t1,char **t2)
{
char *t;
t = *t1;
*t1 = *t2;
*t2 =t;
}
int main() {
char array[][21]={"abcd","adf","nmmmmmmmMMMMMM","gh","11kk%$#"};
for(int i=0;i<4;i++){
swap(&array[i],&array[i+1]);
}
for(int i=0;i<5;i++){
printf("%s\n",array[i]);
}
return 0;
}
有人知道为什么吗?
函数声明和调用不正确。
在本次通话中
swap(&array[i],&array[i+1]);
参数的类型为 char ( * )[21]
,而函数参数的类型为 char **
。并且没有从一种类型到另一种类型的隐式转换。
您需要的是通过使用标准 C 字符串函数交换字符数组的内容来交换字符串 strcpy
。
函数可以通过以下方式声明和定义
#include <string.h>
//...
enum { N = 21 };
void swap( char *t1, char *t2 )
{
char t[N];
strcpy( t, t1 );
strcpy( t1, t2 );
strcpy( t2, t );
}
函数应该像
那样调用swap( array[i], array[i+1]);
这是一个演示程序。
#include <stdio.h>
#include <string.h>
enum { N = 21 };
void swap( char *t1, char *t2 )
{
char t[N];
strcpy( t, t1 );
strcpy( t1, t2 );
strcpy( t2, t );
}
int main(void)
{
char array[][N] = { "abcd", "adf", "nmmmmmmmMMMMMM", "gh", "11kk%$#" };
for(int i=0;i<4;i++){
swap( array[i], array[i+1] );
}
for(int i=0;i<5;i++){
puts( array[i] );
}
return 0;
}
程序输出为
adf
nmmmmmmmMMMMMM
gh
11kk%$#
abcd