我必须输入其频率我不知道的值...
例如第一次输入: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会跳转所有特殊字符,只查找整数...有没有办法将int扫描到一个数组?当有换行符时它会停止?
答案 0 :(得分:5)
我的建议,请转到fgets()
。
答案 1 :(得分:0)
fgets()
否则代码可以在阅读每个'\n'
int
#include <ctype.h>
#include <stdio.h>
#define N (20)
int main(void) {
int myarray[N];
int i = 0;
while (1) {
int ch;
while (isspace(ch = fgetc(stdin)) && ch != '\n')
;
if (ch == '\n' || ch == EOF)
break;
ungetc(ch, stdin);
int data;
if (scanf("%d", &data) != 1)
break; // Bad data
if (i < N)
myarray[i++] = data;
}
return 0;
}