从标准输入读取整数并保存它们 - C
问题描述:
第一行输入包含一个整数。每个输入之后是包含两个整数的行,每个整数不大于1 000 000.第一个整数n是向量的大小,第二个整数m是寄存器信息的行数。以下每行都包含两个表示这个的整数x和y。一行中的任何两个整数由一个空格分隔。这些行不包含其他字符,除了已完成的新行从标准输入读取整数并保存它们 - C
所以我选择x作为向量中的位置。 x被存储在num1
在my_struct
结构和y存储在num2
typedef struct my_struct{
int num1;
int num2;
bool my_bool;
} my_struct;
int main(){
int testCase, sizeVector, numLines, num1_in, num2_in, linesScanned = 0;
scanf("%d\n %d %d", &testCase, &sizeVector, &numLines);
my_struct my_vector[sizeVector+1];
my_vector[0].num1 = testCase;
my_vector[0].num2 = 0;
my_vector[0].my_bool = false;
while (linesScanned < numLines) {
scanf("%d %d\n ", &num1_in, &num2_in);
my_vector[num1].num1 = num1_in;
my_vector[num1].num2 = num2_in;
my_vector[num1].my_bool = false;
linesScanned++;
}}
输入例如:
1
3 2
1 2
2 3
我的问题是,第一scanf
效果很好,但对循环没有按”吨。它没有保存价值,因为它应该
答
更改第二scanf()
:
scanf("%d %d\n ", &num1_in, &num2_in);
通过
scanf(" %d %d", &num1_in, &num2_in);
事实上,在你的第二个scanf()
你不开始阅读之前赶上新线整数。 (空格,制表新生产线在你输入进入,但它不是逮住既不在第一scanf()
也不在你的第二个scanf()
添加空间的字符串格式的开始你的第二个scanf()
会抓住任何空白,新行......)
答
更改您的代码以摆脱您的scanf
函数中的\n
。事实上,你也可以摆脱这些空间。当使用%d
时,输入中的所有空白都将被忽略。
你也不会增加你的数组索引。
+0
它的工作!谢谢!感谢您对索引 – FriedRike 2013-03-12 16:59:03
是什么'num1'(你使用作为'my_vector'的指数之一)? – varnie 2013-03-12 16:47:33
是的,这就是我使用它的原因。 – FriedRike 2013-03-12 16:58:25
我的意思是,你不增加它,是吗?在您显示的代码中,不清楚它是否在每次迭代中更新。所以,看起来你在每次迭代时都会覆盖'my_vector'的特定项目。 – varnie 2013-03-12 17:00:18