c - C - 如何读取由逗号和空格分隔的输入
问题描述
我有一个关于如何读取输入并将其分配给数组(甚至两个数组)的问题。
我有一个项目,我必须:
Create a C console application to compile the following statistics on a list of real number pairs:
• minimum value;
• maximum value;
• median value;
• arithmetic mean;
• mean absolute deviation – (mean, median, mode)
• variance (of a discrete random variable);
• standard deviation (of a finite population);
• mode (including multi-modal lists).
• least squares regression line
• outliers
您的程序必须处理任何长度的列表。该列表将从控制台输入(或通过管道传输),或从文件中读取。该列表以流结束 (^Z) 或非数字输入终止。
所以基本上,程序必须阅读:
1,2 2,23 3,45 5,34 或:1,2 3,4 5,6 7,8 并能够计算它们的统计属性。
我的问题是我只需要从某个地方开始,我知道如何进行计算和创建函数等。我对如何实现这些部分感到困惑:“列表的任何长度”和“实数对列表”。请参阅下面的示例。
到目前为止我尝试了什么:
包括
int main()
{
int a[100];
int b[100];
int n = 100;
for (int i = 0; i < n; i++) {
scanf_s("%d,", &a[i]);
}
for (int i = 0; i < n; i++) {
printf(" %d", a[i]);
}
return 0;
}
它返回一个结果,但只返回一个固定的数组长度,并给我一堆-858993460 -858993460。
现在,我只想知道如何正确读取输入并将它们分配给一个数组,这样我就可以读取奇数和偶数索引并分别计算它们的平均值和任何东西......
或者将它们分配给两个不同的数组(x[],y[]),x 代表逗号左边的数字,y 代表右边的数字。
我只是一开始就被卡住了,所以如果有人有任何提示,将不胜感激。
解决方案
嗨,您可以在字符数组的一行中获取整个输入,然后在数组上循环以正确拆分 char 数组以将其转换为整数数组。以下是您可以尝试的代码:
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
char *src = (char*)malloc(sizeof(char) * 500);
fgets(src, 500, stdin);
int arr[500];
int index = 0;
int n;
while ( sscanf ( src, "%d%n", &arr[index], &n ) == 1 ) {
//while ( sscanf ( src, "%d,%n", &arr[index], &n ) == 1 ) { ////Use this for values separated by commas
printf("%d\n", arr[index]);
index++;
src += n;
}
return 0;
}
推荐阅读
- reactjs - 无法在 handleOnSuccess 方法上设置状态-react-plaid-link 集成
- python - 目前使用Android qpython。如何发出类似于 winsound.Beep 的哔声?
- javascript - 如何使用我的网络应用程序中的 JavaScript 将 JSON 字符串写入和读取到 Google Cloud 存储桶?
- spss - 如何在 SPSS 中使用来自其他受访者的数据计算新变量?
- python - 如何使用张量作为函数的输入?(tensorflow)
- c++ - free():实现vector的erase()时指针无效
- reactjs - 如何在静态 index.html 文件中使用 react-router BrowserRouter
- matlab - 如何在MATLAB中用双值在matlab中声明分段函数?
- ruby-on-rails - 乘客和 rbenv 问题 - 库版本不兼容
- python - 有没有办法每次使用 for 循环调用列表中的项目?