c - scanf 和 printf 不打印正确的值

标签 c string printf scanf stdio

这是怎么回事? 代码如下:

#include<stdio.h>
#include<string.h>

int main()
{
    char name[15];
    char name_[15];
    char answ[1];

    printf("What's your name?\n");
    scanf("%s", name);

    strcpy(name_, name);

    printf("Yes / No: ");
    scanf("%s", answ);

    printf("Hello! %s\n", name_);
    printf("You said: %s\n", answ);

    return 0;
}

输入“name”和“yes”,预期输出如下:

Hello! name

You said: yes

相反,我得到:

Hello! es

You said: yes

我还尝试在 %s 之前添加空格,但没有结果。

那么我到底错过了什么?

最佳答案

answ 只能包含 1 个字符。因此,目前,额外的字符 "es" + '\0' 被写入分配给 name_ 的内存中。 因此,"es" 被打印。

关于c - scanf 和 printf 不打印正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58207289/

相关文章:

c - 如何使构造函数中声明的变量在主文件中可见

c - 为什么我的递归函数即使到了return(0)也不会停止?

c++ - 为 fwprintf 写一个包装器

c++ - 有没有办法指定使用 printf() 打印出字符串的多少个字符?

c - 函数采用结构的头文件中的错误

c - 当多个线程在循环中运行时索引如何受到影响

C中带空格的char转换为int

python - 使用 strip 函数删除通过正则表达式获得的字符串的一部分

string - 如何从 Bash 变量中去除空格?

c - C 中 LDBL_MIN 返回 0,LDBL_MAX 返回#QNAN