请问C中如何通过scanf读取N(不确定)个一次性输入以空格分开的数字?

LanctinaLancer 2009-10-03 10:14:35
因为这是一道题里的,输入格式是定下的,是一次性输入如“1 2 3 4 5 6”这样的一串数字,N在读取前是已经知道的,但在编写时是未知的
...全文
1710 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
东大坡居士 2009-10-05
  • 打赏
  • 举报
回复
6楼的好一些....
tangwei052815 2009-10-04
  • 打赏
  • 举报
回复
5楼的也太麻烦了吧!我觉得还是一楼的最简单,UP
ljhhh0123 2009-10-04
  • 打赏
  • 举报
回复
抱歉,修改的五楼的代码,注释不对,删掉就好了.
ljhhh0123 2009-10-04
  • 打赏
  • 举报
回复
先整个取一行,然后再用分割函数strtok进行数字分割,就可以取你要的数了,在MAX以下个数都行.
#include <stdio.h>
#include <string.h>
#define MAX 6 /*定义常量*/
int main(void)
{
int n; /*当前处理的字符*/
int i=0;/*计数器*/
int arr[MAX]; /*存放转换后的数字,大小为常量所定义的*/
char buf[1024];
char *p;
fgets(buf, 1024, stdin);//取一行你的输入

for(p = strtok(buf, " \t"); p != NULL && i < MAX;){
sscanf(p, "%d", &n);
arr[i] = n; /*根据ASCII码把字符转换为数字*/
++i;
if( (p = strtok(NULL," \t\n")) == NULL || i == MAX )
break;
/**/

}
/******************************/
for(n = 0;n< i;n++) /*输出*/
printf("%d ",arr[n]);
return 0;
}
shashenyidaoOCEAN 2009-10-04
  • 打赏
  • 举报
回复
就是循环啊,每输入一个验证一个,在提示下一个
Z782282738 2009-10-04
  • 打赏
  • 举报
回复
这就用到循环了。用循环输入
billbonaparte1 2009-10-04
  • 打赏
  • 举报
回复
输入N个数 你肯定是想在程序运行过程中来指定N的值 只有通过指针来实现。
代码如下(C格式):
int N; //在程序运行中指定
int *pnum; //用于保存输入的N个数据
int i;
printf("input N:");
scanf("%d",&N);
pnum=(int *)malloc(N*sizeof(int));
for(i=0;i<N;i++)
scanf("%d",pnum+i); //这里不用解释吧 pnum+i是地址 相当于&pnum[i]

到这里就完成任务了
cNETLOOK 2009-10-04
  • 打赏
  • 举报
回复

/*n.c -- 读取一行数字*/
#include <stdio.h>
#define MAX 6 /*定义常量*/
int main(void)
{
char n; /*当前处理的字符*/
int i=0;/*计数器*/
int arr[MAX]={0}; /*存放转换后的数字,大小为常量所定义的*/

while(i < MAX) {
scanf("%c",&n); /*读取一个字符 */
if(n >= '0' && n <= '9'){ /*数字形式字符*/
arr[i] = n - 48; /*根据ASCII码把字符转换为数字*/
++i; /**/
}
}
/******************************/
for(i = 0;i< MAX;i++) /*输出*/
printf("%d ",arr[i]);
return 0;
}

芒果仔 2009-10-03
  • 打赏
  • 举报
回复
不对不对……

改正一下:

printf("input n:"); 
scanf("%d',&n);
printf("input the score:\n");
for (i=0;i<=n-1;i++)
scanf("%d",&a[i]);


芒果仔 2009-10-03
  • 打赏
  • 举报
回复
printf("input n:");
scanf("%d',&n);
printf("input the score:\n");
for (i=0;i<=n-1;i++)
scanf("%d",&i);

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧