在C中读取单个字符

我正在尝试从控制台读取一个字符(在while循环中)。 但它不止一次地读了。

输入:

a 

输出:

 char : a char : char : ' 

码:

 while(..) { char in; scanf("%c",&in); } 

我怎么才能读’a’?

 scanf("%c",&in); 

留下在下一次迭代中消耗的换行符。

将其更改为:

 scanf(" %c",&in); // Notice the whitespace in the format string 

告诉scanf忽略空格。

要么

 scanf(" %c",&in); getchar(); // To consume the newline 

要只读取一个char,请使用getchar :

 int c = getchar(); if (c != EOF) printf("%c\n", c); 

scanf("%c",&in); 您可以在%c之后添加换行符\n以吸收额外的字符

 scanf("%c\n",&in); 

你可以这样做

 char *ar; int i=0; char c; while((c=getchar()!=EOF) ar[i++]=c; ar[i]='\0'; 

通过这种方式,您可以创建一个字符串,但实际上它是一个char数组。