scanf读字符串的缺点和fgets的补充

scanf 在遇到带空格的字符串输入时 有两种做法:

  1. 在 %s 中带正则 ;
  2. 使用 fgets 来获取; 偶尔需要配合 getchar 来吃掉 \n
#include "cstdio"
#include "string"

// scanf 没读出来的东西 不代表它就不存在了 它还在缓冲区
// 程序没有退出,缓冲区就是不干净的。
int main() {

    // 第一次 name中包含的 name 遇到 空格停止了读取,
    // 缓冲区还剩 空格 和 Ma
    char name[30];
    scanf("%s", name);      //Jack Ma
    printf("%s\n", name);   //Jack

    // fgets 将缓冲区的 空格 和 Ma 还有\n读取了出来    注意看输出
    // char	*fgets(char * __restrict, int, FILE *);
    fgets(name, sizeof(name), stdin);
    printf("%s\n", name);   // Ma和\n
    return 0;
}

全部评论
谢谢大佬的无私分享
点赞 回复 分享
发布于 2023-02-14 10:54 山东
正好用到了,真及时
点赞 回复 分享
发布于 2023-02-14 11:06 新疆

相关推荐

点赞 评论 收藏
分享
牛客410815733号:这是什么电影查看图片
点赞 评论 收藏
分享
点赞 7 评论
分享
牛客网
牛客企业服务