如何用字符串替换宏?

时间:2017-08-28 12:26:54

标签: c

#include <stdio.h>
#include <stdarg.h>
#define ammo "full"

int main()
{
  char a[100];
  a = ammo;
  printf("%s",a);
  return 0;
}

我正在尝试将#define ammo替换为"full"(字符串),并希望在屏幕上打印它以检查它是否有效但代码未编译。

2 个答案:

答案 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;

请注意,如果使用指针,则无法更改字符串的内容。