gpt4 book ai didi

c - 扫描并打印字符串

转载 作者:行者123 更新时间:2023-11-30 20:13:30 25 4
gpt4 key购买 nike

我写了一个非常基本的代码,但似乎无法让它工作。

char *a;
scanf("%s",a);
printf("%s",a);

输入:aWord

输出:空

我哪里错了?为什么我得到空输出?我尝试执行以下操作,它按预期工作,为什么会这样?

char a[50];
scanf("%s",a);
printf("%s",a);

输入:aWord

输出:aWord

我认为使用上述任一方式在 c 中声明字符串是等效的?

最佳答案

char *a;

这里,a只是一个char*类型的指针。它指向某个“随机”位置。没有任何内存分配给它。写入此无效内存位置会调用 Undefined Behavior 。仅当满足以下条件时,您才能写入此位置

  1. a 的内存是使用 malloc/calloc 动态分配的。
  2. a 指向有效的内存位置:

    char buffer[100];
    a = buffer;

    // Now you can write to `a`.

这里:

char a[50];

内存会自动分配给堆栈上的a。因此,您可以写入此内存位置。

关于c - 扫描并打印字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30075520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com