使用' \ 0'结束程序在c编程中 - while循环

时间:2018-02-05 02:36:09

标签: c while-loop

我无法在c编程语言中使用'\0'完成while循环,c代码如下

#include<stdio.h>

char r;

int main()
{
    do 
    {
        scanf("%c", &r );
        printf("%c", r);
    }
    while (r!='\0');

    return 0;
}

我的问题是程序永远不会在类型化字符串行的最后一个字符处完成,因为scanf而while循环始终处于等待模式,所以永远不会转到return 0。我不知道为什么会这样。

这个程序的输出是这样的:

1234
2345
4556
7788
2345, 4556, 7788

这些是我输入的数字,但程序永远不会完成(永远不会转到return 0),我想只打印一个字符串,我希望程序结束。

1 个答案:

答案 0 :(得分:2)

典型的用户输入是,一系列字符,包括最终searchView.setSearchableInfo(searchManager.getSearchableInfo(new ComponentName(this, SearchableActivity.class)));

作为用户输入的一部分,'\n'只是另一个角色。通常很难键入。有些键盘允许使用 Ctrl Shift @ 或其他方式@user3629249

输入时使用的字符串(一系列字符,包括最终'\0')很少。

要处理用户输入,一种简单的方法是使用'\0'来读取用户输入的。该输入将fgets()保存为字符串,方法是将空字符 fgets(buf)附加到读取的字符中:全部保存在{{1}中}。

'\0'

要结束用户输入,通常的方法是发出&#34;文件结束信号&#34;,请参阅recognise return as EOF on the console

如果代码必须使用buf,请检查返回值以检测文件结束或输入错误。 @user3629249

#include<stdio.h>

int main(void) {
  char buf[100];
  if (fgets(buf, sizeof buf, stdin) == NULL) {
    puts("End-of-file or error encountered");
  } else {
    // maybe lop off the potential trailing \n from buf
    buf[strcspn(buf, "\n")] = '\0';
    printf("User input was <%s>\n", buf);
  }
  return 0;
}