【问题标题】:how to replace a macro with a string? [duplicate]如何用字符串替换宏? [复制]
【发布时间】:2018-02-05 17:20:16
【问题描述】:
#include <stdio.h>
#include <stdarg.h>
#define ammo "full"

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

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

【问题讨论】:

  • a=ammo --> strcpy()
  • char *a = ammo;
  • char a[100] = ammo; 只是为了完成设置。
  • 现在,pick up a good book。这是一个人在开始时学到的基本知识之一。
  • *a=ammo 不起作用。 Filip 提到的是char *a = ammo;,这完全不同,因为它是用初始化而不是赋值来定义的。

标签: c


【解决方案1】:

而不是 a=ammo;你应该使用 strcpy(a,ammo);当你有字符串时,你不应该使用直接赋值,而是使用 C 方法 strcpy 将一个字符串复制到另一个。它会工作

【讨论】:

  • 为了获得更好的答案,我认为您应该添加 StoryTeller 和 Filip Kočica 提供的另外 2 个选项 :)
【解决方案2】:

将 C 字符串分配给数组是无效的(初始化时除外,见下文)。您必须将字符串“复制”到数组中,因为空间已经分配:

strcpy(a, ammo);

更好的是,使用更安全的复制功能:

strncpy(a, ammo, sizeof(a) / sizeof(char));

或者初始化的时候直接赋值:

char a[100] = ammo;

或者,不要使用数组。改用指针:

char *a;
a = ammo;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-31
    • 2022-08-03
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    相关资源
    最近更新 更多