c-如何在不转换为字符串的情况下一次传递一个整数



我可以向用户请求输入并将其插入到链接列表中。因此,以下将从用户处获得1个整数:

  printf("Enter an integer: ");
  scanf("%d",&value);
  insert(value); // insert value to linked list

但我希望用户能够输入许多整数(他们想要多少就输入多少)。示例:Enter an integer: 5 6 7 8 9并将5添加到insert,然后将6添加到insert,依此类推

我读过这篇文章"使用C#在一行中读取两个整数",建议的答案是使用字符串数组,但我不想这样做。我希望用户输入的每个数字都输入到一个链接列表中。

主要功能:

int main(){
   printf("Enter integer(s) : ");
   scanf("%d",&num);
   insert(num);
   return 0;
}

感谢

实现这一点的一种方法是首先扫描一个整数以确定要读取的整数数量,然后读取那么多整数并将其存储到列表中。

int i, size;
int x;
scanf("%d", &size);
for(i=0; i < size; i++){
    scanf("%d", &x);
    insert(x);
}

示例输入如下:

4
10 99 44 21

为什么不为这个添加一个简单的while/for循环

printf("total numbers to input? ");
scanf("%d",&i);
printf("nEnter integer(s) : ");
while(i--){
   scanf("%d",&num);
   insert(num);
}

您可以在scanf中使用格式化程序,它在用户点击进入时获取所有内容

char array[256];
scanf("%[^n]",array)

然后使用

int num;
while(*array !='') // while content on array is not equal to end of string
{
  if(isspace(*array)) // need to check because sometimes when atoi is  returned, 
                         // we will move only one location size of char,
                         //and convert blank space into integer
   *array++;
else{
   num=atoi(*array);   // function atoi transform everything to blank space
   insert(num);
   *array++;   // then move to the next location in array
 }
}

相关内容

  • 没有找到相关文章

最新更新