#include <stdio.h>
#include <stdarg.h>
#define ammo "full"
int main()
{
char a[100];
a = ammo;
printf("%s",a);
return 0;
}
我正在尝试将#define ammo
替换为"full"
(字符串),并希望在屏幕上打印它以检查它是否有效但代码未编译。
答案 0 :(得分:2)
而不是a = ammo;你应该使用strcpy(a,ammo);如果有字符串,则不应使用直接赋值,而是使用C方法strcpy将字符串复制到另一个字符串。它会起作用
答案 1 :(得分:2)
将C字符串分配给数组是无效的(初始化时除外,请参见下文)。你必须&#34;复制&#34;数组的字符串,因为空间已经分配:
strcpy(a, ammo);
更好的是,使用更安全的复制功能版本:
strncpy(a, ammo, sizeof(a) / sizeof(char));
或者在初始化时直接指定它:
char a[100] = ammo;
或者,不要使用数组。改为使用指针:
char *a;
a = ammo;
请注意,如果使用指针,则无法更改字符串的内容。