我在microsoft visual c ++ 2010中编写了这个简单的c代码。
#include<stdio.h>
#include<conio.h>
void main()
{
char title[20], artist[30];
int numtrack, price;
char type;
printf("Enter the title of CD \n");
scanf("%s",title);
printf("\nName of the artist \n");
scanf("%s",artist);
printf("\nEnter the type of CD(enter a for album and s for single)\n");
scanf("%c",&type);
printf("\n Enter the number of tracks \n");
scanf("%d", &numtrack);
printf("\n Enter the price of the cd \n");
scanf("%d", &price);
printf("%s\n%s\n%c\n%d\n%d\n",title, artist, type, numtrack, price);
getch();
}
出局是
Enter the title of CD
ranjit
Name of the artist
mahanti
Enter the type of CD(enter a for album and s for single)
Enter the number of tracks
4
Enter the price of the cd
4
ranjit
mahanti
4
4
我无法理解为什么它不等待类型变量的输入?有人可以解释一下吗?提前谢谢。
答案 0 :(得分:7)
而不是
scanf("%c",&type);
你想要
scanf(" %c",&type);
否则,前一个字符串中的一个换行符将作为类型使用。
答案 1 :(得分:0)
当您使用scanf读取字符串时,它只读入一个单词。这个单词排除了换行符("\n"
)。当您使用scanf
按照此处跟随type
读取单个字符时,换行符将是已读取的字符。
您可以通过在%c
之前添加一个空格来解决此问题,该空格将忽略任何空格(请参阅http://www.cplusplus.com/reference/clibrary/cstdio/scanf/):scanf(" %c",&type)
答案 2 :(得分:0)
在getchar()
之后添加scanf("%s",artist);
,以便消耗额外的 \n
(或 \r\n
)。
答案 3 :(得分:0)
正在为类型
处理上一个scanf的'\ n'