第一行输入包含一个整数。然后每个输入后跟一行包含两个整数,每个整数不大于1 000 000.第一个整数n是向量的大小,第二个整数m是来自寄存器信息的行数。以下每行包含两个整数x和y表示。一行中的任何两个整数由一个空格分隔。除了完成新行
之外,这些行不包含其他字符所以我选择了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
效果很好,但循环中的on不起作用。它不会保存值
答案 0 :(得分:1)
更改第二个scanf()
:
scanf("%d %d\n ", &num1_in, &num2_in);
通过
scanf(" %d %d", &num1_in, &num2_in);
实际上在你的第二个scanf()
中,在开始读取整数之前你没有抓住新行。新行已在您的输入中输入,但不会在第一个scanf()
或第二个scanf()
在第二个scanf()
的字符串格式的开头添加空格将捕获任何空格(空格,制表,换行......)
答案 1 :(得分:1)
更改您的代码,以摆脱\n
函数中的scanf
。事实上,你也可以摆脱这些空间。使用%d
时,忽略输入中的所有空格。
您似乎也没有递增数组索引。
答案 2 :(得分:1)
你的第二个scanf
应该是:
scanf(" %d %d", &num1_in, &num2_in);