【问题标题】:how to assign spaced input numbers in array of unkown length [duplicate]如何在未知长度的数组中分配间隔的输入数字[重复]
【发布时间】:2015-04-03 11:51:58
【问题描述】:

目前,我要求用户指定要指定的输入值的数量。 这是它的代码:

#include<stdio.h>
#include<math.h>
#include<string.h>
void main()
{
    int i,n;
    printf("\nHow many record you will enter: ");
    scanf("%d",&n);
    float x[n];
    printf("\n\nEnter the values of velocity (m/s):");
    for(i=0; i<n; i++)
    {
        scanf("%f",&x[i]);
        printf("\n%f",x[i]);
    }   
}

代码运行良好。但是,我想以这样一种方式编写代码,它会通过扫描输入(数字用空格分隔,每个数字之间不需要一个空格)来计算“n”而不询问用户。 你能给我一个方法吗?

PS:我是编码新手

提前致谢

【问题讨论】:

  • 建议:更喜欢int main(void) 而不是void main()
  • 为什么要在要打印的文本之前打印换行符?我在初学者中看到的越来越多,这对我来说真的没有任何意义。主要是因为默认情况下输出到stdout(这是printf 写入的内容)是行缓冲,这意味着输出在换行符上刷新(即实际打印)。因此,如果您在开头打印两行换行符,那么最初只会显示第一行。
  • 我可以用字符串做你想做的事,但是把输入当作int?是否可以?我认为,不是... :(
  • 至于您的问题,如果您不关心存储这些值,那么只需无限循环读取,直到scanf 返回EOF0。否则,您可能希望找到有关 pointersmallocrealloc 函数的教程。
  • 或者您只需查找所有其他“相关”问题。这个问题以前被问过很多次。

标签: c


【解决方案1】:

您可以查看fgets()strtok()。将它们结合起来,您可以根据您的目标进行设计。此外,您可能需要了解和使用malloc()free() 才能使用动态内存分配。

也许this answer可以帮助你。

【讨论】:

  • 我正在尝试使用 scanf 函数查找输入的结尾,如下所示:#include #include #include void main() { int i,n;浮动 x[10]; printf("\n\n输入速度值(m/s):"); while(scanf("%f",&x[i])==1) { scanf("%f",&x[i]);我++; n++; } for (i=0; i>n; i++) { printf("\n%f",x[i]); } } while 循环没有结束!
  • 我已经看到了,但没有明白。我理解了所有解释的步骤并研究了那里提到的所有功能。但我不确定如何使用它来解决我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
  • 2012-11-01
  • 2021-03-23
  • 1970-01-01
  • 2010-10-14
相关资源
最近更新 更多