从空间字符输入读取字符串?

从空间字符输入读取字符串?

我正在使用Ubuntu,我也使用Geany和CodeBlock作为我的IDE。我正在尝试做的是读取一个字符串(如"Barack Obama")并将其放在一个变量中:

#include <stdio.h>int main(void){
    char name[100];

    printf("Enter your name: ");
    scanf("%s", name);
    printf("Your Name is: %s", name);

    return 0;}

输出:

Enter your name: Barack Obama
Your Name is: Barack

如何让程序读取整个名称?


慕桂英4014372
浏览 536回答 3
3回答

繁星淼淼

使用:fgets&nbsp;(name,&nbsp;100,&nbsp;stdin);100是缓冲区的最大长度。您应该根据需要进行调整。使用:scanf&nbsp;("%[^\n]%*c",&nbsp;name);这[]是扫描集字符。[^\n]告诉我,虽然输入不是换行符('\n')接受输入。然后使用%*c它从输入缓冲区中读取换行符(未读取),并*指示此读取输入被丢弃(赋值抑制),因为您不需要它,并且缓冲区中的这个换行符不会创建您可能采取的下一个输入的任何问题。请阅读此处有关scanset和赋值抑制运算符的信息。注意你也可以使用gets....切勿使用gets()。因为在不事先知道数据的情况下不可能分辨出get()将读取多少个字符,并且因为gets()将继续存储超过缓冲区末尾的字符,所以使用它是非常危险的。它已被用来打破计算机安全。请fgets()改用。

HUX布斯

试试这个:scanf("%[^\n]s",name);\n&nbsp;只需设置扫描字符串的分隔符。

慕后森

下面是一个如何使用该fgets函数获取包含空格的输入的示例。#include&nbsp;<stdio.h>int&nbsp;main(){ &nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;name[100]; &nbsp;&nbsp;&nbsp;&nbsp;printf("Enter&nbsp;your&nbsp;name:&nbsp;"); &nbsp;&nbsp;&nbsp;&nbsp;fgets(name,&nbsp;100,&nbsp;stdin);&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;printf("Your&nbsp;Name&nbsp;is:&nbsp;%s",&nbsp;name); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}
打开App,查看更多内容
随时随地看视频慕课网APP