字符指针与字符数组复制问题
下面一段代码,使用strcpy复制之后无法输出复制之后的结果,请问一下大家原因是什么#include <stdio.h>
#include <string.h>
int main()
{
char *a = "ALIENTEK";
char *b = "00000000";
char c = "ABC123";
char d = "12345678";
printf("未更改前:\n");
printf("a:%s\n",a);
printf("b:%s\n",b);
strcpy(a,c);
strcpy(b,d);
printf("更改之后:");
printf("a:%s\n",a);
printf("b:%s\n",b);
return 0;
} 你声明字符数组的时候加个大括号试试 加油少年啊 发表于 2020-11-1 22:00
你声明字符数组的时候加个大括号试试
这没区别啊哥{:5_94:} a和b它放在一个不能修改的只读存储区里,你修改它,当然错了。 加油少年啊 发表于 2020-11-1 22:00
你声明字符数组的时候加个大括号试试
字符串用双引号就行,不需要大括号的 程序第15行、第16行有错误,类型不对等,前者是 char * ,后者是 char[] 本帖最后由 大裤衩子 于 2020-11-2 09:03 编辑
指针a和b不能更改,重新指向新的字符串,字符串c和d才能用strcpy的方式更改
#include <stdio.h>
#include <string.h>
int main()
{
char *a = "ALIENTEK";
char *b = "00000000";
char c = "ABC123";
char d = "12345678";
printf("未更改前:\n");
printf("a:%s\n",a);
printf("b:%s\n",b);
a = c; //strcpy(a,c);
b = d; //strcpy(b,d);
printf("更改之后:");
printf("a:%s\n",a);
printf("b:%s\n",b);
return 0;
}
出错的原因如5楼说的一样,改正的办法就是让他们为相同的类型
#include <stdio.h>
#include <string.h>
int main()
{
char *p,a = "ALIENTEK";
char *q,b = "00000000";
p = a;
q = b;
char c = "ABC123";
char d = "12345678";
printf("未更改前:\n");
printf("a:%s\n", a);
printf("b:%s\n", b);
strcpy(p, c);
strcpy(q, d);
printf("更改之后:");
printf("a:%s\n", a);
printf("b:%s\n", b);
return 0;
} https://fishc.com.cn/forum.php?mod=viewthread&tid=179907#pid4969228
页:
[1]