我必须采用以下格式输入
S1 S2 S3
其中S1是字符,S2是S3,S3是整数 例如
3
A 123 452
D 450 53
B 330 672
(其中'3'代表查询数量) 现在我已经为它编写了以下代码:
while(i<=Q){
scanf("%c %d %d",&ch,&index,&num);
printf("%c %d %d\n",ch,index,num);
i++;
}
但是,对于上面显示的三个值,我得到以下输出
0 755130840
A 123 452
123 452
在顶部有一个额外的行,每次都会更改大值(此处为755130840)。
我哪里错了?我甚至尝试单独扫描3个值并在每个扫描语句之前刷新输入流。但是,它也无济于事。
鉴于两个空白行,我相信换行符('\ n')存储在某个变量中。如何处理它?</ p>
答案 0 :(得分:1)
在scanf中的%c之前添加一个空格。这将允许scanf在读取ch
之前跳过任意数量的空格。
scanf
空白跳过空格(包括换行符)并读取下一个不是空格的字符。
这是一个代码,这将工作正常。
#include <stdio.h>
int main(void) {
// your code goes here
int i =0;
int Q = 2;
char ch;
int index;
int num;
while(i<=Q){
scanf(" %c %d %d",&ch,&index,&num);
printf("%c %d %d\n",ch,index,num);
i++;
}
return 0;
}
答案 1 :(得分:0)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num, count, numone, numtwo;
char charip;
printf("Enter numbr of elem:\t");
scanf("%d", &num);
if (num < 0)
{
printf("Enter positive value!!!!!\n");
exit (-1);
}
count = 0;
while (count < num)
{
getchar();
scanf ("%c %d %d", &charip, &numone, &numtwo) ;
printf("%c %d %d\n", charip, numone, numtwo);
count++;
}
return 0;
}