使用第三个变量更改2d数组的基址时出错

时间:2014-10-09 04:55:02

标签: c arrays pointers multidimensional-array

很明显,程序尝试做的是使用辅助变量names[3]交换names[40]t中存储的地址。但是我收到了错误

#include<conio.h>
#include<stdio.h>
int main() {
  char names[5][20] = {"rrr","kkkk","hddj","dhfjdj","jjdnfjd"};
  int i;
  char *t;
  t = names[3];
  names[3] = names[4];
  names[4] = t;
  for (i = 0; i <= 4; i++) {
    printf("%s\n", names[i]);
  }
  return 0;
}

2 个答案:

答案 0 :(得分:0)

试试这个:

int main()
{
char names[5][20]={"rrr","kkkk","hddj","dhfjdj","jjdnfjd"};
int i;
char *t=malloc(20*sizeof(char));
strcpy(t,names[3]);
strcpy(names[3],names[4]);
strcpy(names[4],t);
for(i=0;i<=4;i++)
{
    printf("%s\n",names[i]);
}

return 0;

}

答案 1 :(得分:0)

你可以尝试其中任何一个......

#include<stdio.h>
#include<string.h>
 int main()
 {
 char names[5][20]={"rrr","kkkk","hddj","dhfjdj","jjdnfjd"};
 int i;


 char t[20];//or char *t=malloc(20*sizeof(char));

 strcpy(t,names[3]);
 strcpy(names[3],names[4]);
 strcpy(names[4],t);

 for(i=0;i<=4;i++)
 {
 printf("%s\n",names[i]);
 }

 return 0;
}