按Enter键停止scanf

时间:2015-03-04 03:33:40

标签: c string

我正在编写一个C程序,它接受字符串输入并在单独的行中打印每个单词。但即使在按下回车后程序也没有停止。请提出解决方案。

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

int main(void)
{
    char str[50];
    while(scanf("%s",str)&&strcmp(str,"\n"))
        printf("%s\n",str);

}

1 个答案:

答案 0 :(得分:0)

您需要使用fgets来读取该行,如果输入只是一个字符,这是一个换行符,那么中断继续。

while(fgets(str,sizeof(str),stdin))
{
   if(strcmp(str,"\n") == 0)
   break;
   else
   {
     size_t n = strlen(str);
     if(n>0 && str[n-1] == '\n')
     str[n-1] = '\0';
     printf("%s\n",str);
   }
}

PS:fgets()附带换行符,我们需要压制换行符,如上所示。