C:扫描上的循环

  • 本文关键字:循环 扫描 c scanf
  • 更新时间 :
  • 英文 :

    char buf[1024] = {0};
    // send a message
    if(status == 0) {
        while(1) {
            printf("Enter message : ");
            scanf("%1023[^n]", buf);
            fflush(stdin);
            if(strcmp(buf,"quit")==0)
                break;
            status = write(s, buf, strlen(buf));
            fflush(stdout);
            memset(buf,0,sizeof buf);
        }
    }

对于我的扫描,我想吸收空间。但是,如果我运行这部分代码,"输入消息:"将处于无限循环中。

如果我仅将scanf更改为" %s",则它可以正常工作,但是我无法接受中间有空格的输入。

任何人都可以帮助发现它是如何抛出无限循环或任何想法来解决这个问题的吗?

scanf()一行的方法太多了。 使用fgets()

char buf[1024] = {0};
// send a message
if(status == 0) {
    while(1) {
        printf("Enter message : ");
        if (fgets(buf, sizeof buf, stdin) == NULL) break;
        //scanf("%1023[^n]", buf);
        //fflush(stdin);
        buf[strcspn(buf, "n")] = ''; // lop off potential n
        if(strcmp(buf,"quit")==0)
            break;

        status = write(s, buf, strlen(buf));
        // fflush(stdout);
        memset(buf,0,sizeof buf);
    }
}

最新更新