【发布时间】:2014-11-26 11:00:42
【问题描述】:
我必须输入我不知道频率的值...
例如第一个输入:1 32 54 65 6
第二个输入:2 4 5
我首先想到的是,扫描值,如果换行 '\n' 则中断循环,但这并没有那么顺利,所以我说我使用字符,然后我进行类型转换以获取数字但是这样做的问题还在于它逐个扫描一个字符,如果它是负值,它也是一个问题;
类似的东西
#include <stdio.h>
int main(){
int myarray[20];
int i=0, data;
while(1){
scanf("%d", &data);
if (data == '\n') break;
myarray[i]=data;
}
return 0;
}
但是,scanf 会跳过所有特殊字符并仅查找整数...有没有办法将整数扫描到数组中,当有换行符时它会停止?
【问题讨论】:
-
data到底是在哪里定义的? -
您可以阅读整行,将其拆分为例如空格,然后将每个部分转换为整数。
-
使用
fgets()读取该行,然后使用sscanf() -
为了可读性,我强烈建议将
break;放入一个新行。虽然这可能是一个品味问题。