c - while 测试条件时使用 scanf 内部

标签 c scanf function-calls

我想存储一系列整数,直到我在数组中按回车键。我该如何实现

输入: 1(制表符空格)2(制表符空格)3(制表符空格)4(制表符空格)输入

我尝试这样做

#include<stdio.h>
main()
{
int i,j,c,d;
int a[5];
for(i=0;i<2;i++){
        j=0;
    while((d=scanf("%d",&c))==1){
         a[j]=c;
         j=j+1;
    }
 }
}

我不知道 scanf 是如何工作的以及如何使用 scanf 返回值。请解释一下我如何存储此输入(如果使用 scanf 并非不可能)并且也可以存储此输入

2) scanf 中除了 %d 之外还可以使用什么?

我有一个包含 200 行的文件,其中的数字如下 (注意:每行都有不同数量的值,但所有数字都小于 200)

1\t2\t3\t4\t5\t
2\t3\t4\t5\t6\t7\t8\t
11\t12\t13\t
.
.
200

...所以我必须将其存储为邻接列表表示

最佳答案

对于你问题的第一部分。 scanf() 返回成功读取的元素数,但在这里没有用,您可以循环扫描,当您按 Enter 时,scanf() 会在一行中选取整数。

   #include <stdio.h>

int main(void) {
    int a[5];
    int i, n;
    for(i=0;i<5;i++)
    {
       if(scanf("%d",&a[i]) != 1)
       {
          printf("Value not read correctly\n");
          break;
       }
    }
    n = i;
    for(i=0;i<n;i++)
        printf("%d\n",a[i]);
    return 0;
}

对于第二个问题,你必须做一些事情

1.使用fgets()从文件中读取一行

2.使用 strtok() 以制表符作为分隔符来换行。

3.现在使用atoi()将每个标记转换为整数

4.现在对整数做任何你想做的事。即创建一个节点,将您的整数添加到该节点

关于c - while 测试条件时使用 scanf 内部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27593348/

相关文章:

c - 我应该如何在函数中传递结构?

c - 如何使用 scanf() 扫描其中包含空格的字符串?

string - 在 vb6 中,如何从 C dll 中检索 char* 参数?

C:我不断收到错误消息:预期表达式

executable - 有没有统一执行程序和调用函数的系统?

c - 良好的轻量级C或C++主从网络库

c - 如何在 C 中绑定(bind)箭头键?

c++ - 使用硬盘进行快速访问取代 RAM

c - 如何读取字符串直到两个连续的空格?

c - 使用 for 循环的数组输入