为什么不按回车键'\n'到getch()?

use*_*349 5 c input

#include <stdio.h>
#include <conio.h>
main()
{
    char ch,name[20];
    int i=0;
    clrscr();
    printf("Enter a string:");
    while((ch=getch())!='\n')
    {
        name[i]=ch;
        i++;
    }
    name[i] = '\0';
    printf("%s",name);
}
Run Code Online (Sandbox Code Playgroud)

当我输入"abc"作为输入时,如果按下输入则不起作用.任何人都可以让我知道为什么条件ch = getch()!='\n'在按Enter键时不会变为假?我还观察到ch正在使用\ r而不是\n.请告诉我.谢谢

sch*_*der 9

使用'\ r'并使用'\ 0'终止字符串.

此外,您可能尝试使用getche()为用户提供可视回声并执行一些其他常规更正:

#include <stdio.h>
#include <conio.h>

#define MAX_NAME_LENGTH 20

int main()
{
    char ch, name[MAX_NAME_LENGTH];
    int i=0;
    clrscr();
    printf("Enter a string:");
    while ( ((ch=getche())!='\r') && (i < MAX_NAME_LENGTH - 1) )
    {
        name[i]=ch;
        i++;
    }
    name[i] = '\0';
    printf("%s\n",name);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)


Bin*_*ier 5

尝试\ r而不是\n

\n是新行字符(0x0A)或10位小数,\ r是carrige返回字符(0x0D)或13位小数.

返回键是carrige返回.