【问题标题】:getting error in exchanging the base address of 2d araay using a third variable使用第三个变量更改二维数组的基地址时出错
【发布时间】:2014-10-09 04:55:01
【问题描述】:

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

#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;
}

【问题讨论】:

  • 你认为你可以像这样分配字符串吗?
  • 这是不可能的。数组不是指针,也不能分配给数组。您需要将内容复制到适当大小的临时缓冲区。 (顺便说一句,如果你事先考虑过这个问题,你会不会意识到它没有意义。)

标签: c arrays pointers multidimensional-array


【解决方案1】:

试试这个:

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;

}

【讨论】:

  • 嘿,别忘了解释你做了什么改变以及为什么。 Stack Overflow 上有很多新手,他们可以从你的专业知识中学到一两件事。对你来说似乎很明显的事情对他们来说可能不是......
【解决方案2】:

你可以尝试任何一种...

#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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-12
    • 2019-11-05
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多