我为什么在scanf之后得到(null)?

时间:2017-02-27 22:35:09

标签: null scanf

我不明白为什么在运行此代码后我得到(null):

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

int main()
{
    char input;

    printf("enter string: ");
    scanf("s", input);

    printf("%s", input);
}

enter image description here

为什么我在scanf之后得到(null)?

2 个答案:

答案 0 :(得分:1)

尝试给你一个长度的字符,i.E。炭[25]。 char现在保留一个字符。

答案 1 :(得分:1)

您的答案中的问题是您有一个char变量input,但它没有使用长度初始化。结果,它打印(NULL)。要解决此问题,您应将input的声明更改为:

 char input[30];

这样,您可以在input变量中存储最多30个字符。请注意,我以30为例;你可以在这里使用你选择的任何值。

其次,行:

 scanf("s", input);

无效;它应该是:

 scanf("%s", input);

因为%s是字符串后面给出的变量的占位符;这是input%s指的是字符串占位符或char []数据类型s是正确的语法。

**顺便说一句,既然你想把整个句子作为输入阅读,那么你应该知道你的代码只能用于接受输入,直到第一个单词和下一个单词之间的空格,因为scanf()不读空间。要了解更多使用字符串的内容,请参阅以下链接:C Programming Strings

祝你好运!