从标准输入流获取整型数组的问题
如何从标准输入流中获取n个整数,并存放到容量为n的数组中(n为任意数)(即我事先不知道要输入多少个数,是从标准输入流中决定数组的容量的) 你准备用什么方法来录入这些数,如何知道输入终点? jackz007 发表于 2020-11-8 17:29你准备用什么方法来录入这些数,如何知道输入终点?
用scanf函数录入吧。就数和数之间有一个空格,输入终点是输入EOF jackz007 发表于 2020-11-8 17:29
你准备用什么方法来录入这些数,如何知道输入终点?
我懂了,谢谢 本帖最后由 jackz007 于 2020-11-9 15:14 编辑
取什么名字好… 发表于 2020-11-8 19:36
用scanf函数录入吧。就数和数之间有一个空格,输入终点是输入EOF
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int blank(char c)
{
if(c == ' ' || c == '\t' || c == ',' || c == '\n') return 1 ;
else return 0 ;
}
int * extract(char s[] , int * x)
{
int d , i , m , n , * p ;
n = strlen(s) ;
d = 10 ;
p = (int *) malloc(sizeof(int) * d) ;
for(i = 0 ; i < n && blank(s) ; i ++) ;
for(m = 0 ; i < n ;) {
sscanf(& s , "%d" , & p) ;
for(; i < n && ! blank(s) ; i ++) ;
for(; i < n && blank(s) ; i ++) ;
if(m % 10 == 9) {
d += 10 ;
p = (int *) realloc(p , sizeof(int) * d) ;
}
}
* x = m ;
return p ;
}
main()
{
int k , n , m, * p ;
n = 1024 * 64 ;
char s ;
fgets(s , n , stdin) ;
s = '\0' ;
p = extract(s , & m) ;
printf("%d" , p) ;
for(k = 1 ; k < m ; k ++) printf("\t%d" , p) ;
printf("\n") ;
free(p) ;
}
编译、运行实况:
D:\00.Excise\C>g++ -o x2 x2.c
D:\00.Excise\C>x2
1 9 3 2 3 10 77 55 77 32 55 108 98 2 3 1 208 987
1 9 3 2 3 10 77 55 77 32
55 108 98 2 3 1 208 987
D:\00.Excise\C>
页:
[1]