从标准输入读取并保存它们 - C

时间:2013-03-12 16:40:52

标签: c input scanf

第一行输入包含一个整数。然后每个输入后跟一行包含两个整数,每个整数不大于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不起作用。它不会保存值

3 个答案:

答案 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);