我在Turbo c 3.1中用C编写了一个练习代码。我的目标是获得角色输出。我的代码如下:
#include<stdio.h>
#include<conio.h>
void main(){
char a[10],b;
int i;
clrscr();
for(i=0;i<10;i++)
a[i]='$';
for(i=0;i<10;i++){
b=getchar();
a[i]=b;
}
for(i=0;i<10;i++)
printf("%c",a[i]);
getch();
}
在这里,我必须使用我输入的内容获得10个字符,但在执行后我只有5个字符。我无法解决这里的问题。 你能帮我么? 提前谢谢。
答案 0 :(得分:3)
当你执行getchar()时,它会读取一个字符。
因此当你输入类似的东西时
a,然后输入,
您键入的内容实际上是2个字符a
和'\n'
。
因此,输出中只有5个字符和5'\ n'。
试试这个
#include<stdio.h>
#include<conio.h>
void main(){
char a[10],b;
int i;
clrscr();
for(i=0;i<10;i++)
a[i]='$';
for(i=0;i<10;i++){
b=getchar();
if(b=='\n'){i--;continue;}
a[i]=b;
}
for(i=0;i<10;i++)
printf("%c",a[i]);
getch();
}
答案 1 :(得分:2)
你可以做一个简单的scanf来解决你的问题
scanf("%c",&a[i]);
但是,要了解getchar()的作用,每次调用它时,它都会读取输入的下一个字符,并将其返回给您,而不管该字符是什么。在您的情况下,在输入数字后键入\n
字符。因此,它会在每个数字之后以\n
存储您的第一个数字。
如果您沉迷于getchar()
if(c=getchar()) == '\n')
c=getchar();
答案 2 :(得分:1)
那么如何进行修正,den?
怎么样:
int ch;
while (i < 10 && (ch = getchar()) != EOF)
if (ch != '\n')
a[i++] = ch;
答案 3 :(得分:1)
可以使用更简单的解决方案:
scanf("%c",&a[i]);
而不是:
b = getchar();
a[i] = b;
答案 4 :(得分:0)
您可以使用getch()
或getche()
代替getchar()
来阅读字符。