c语言怎样检测一行输入上有几个整数

输入N行,每行有可能是一个数,也可能是两个数,用两个数组保存,怎么知道输入了几个数、》?

    输入的时候可以用gets(str);来存放输入的内容,遇到回车结束。这样会读入整行字符串。然后再处理字符串就能够分出数字对应的字符串了,最后利用函数atoi将数字字符串转换成数字就可以了。

    使用strtok函数分隔字符串。

    char *strtok(char s[], const char *delim);

    strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串中包含的所有字符。当strtok()在参数s的字符串中发现参数delim中包含的分割字符时,则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回指向被分割出片段的指针。

    分隔出字符串的数量就是整数的数量,对于每个分隔的字符串,使用atoi进行转化即可。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-11
输入的时候可以用gets(str);来存放输入的内容,遇到回车结束。这样会看作是字符串,然后再处理字符串就能够分出数字对应的字符串了,最后利用函数atoi将数字字符串转换成数字就可以了。追问

可是他一行有两个数我怎么分辨?分辨了又如何存入数组?

追答

#include<stdio.h>

#include<conio.h>

#include<string.h>

#include<stdlib.h>

int main()

{

 char str[100];

 int n[100];//用来存放一行中输入的数字 

 while(gets(str))

 {

  int len=strlen(str),pos=0;

  char c=' ';

//用来存放当前字符的前一个字符,这样如果从空格变到数字表示开始了一个数字,

//如果从数字变成了空格表示一个数字结束。然后可以利用atoi函数将找到的数字

//字符串变成对应的整型,存在n数组中。程序输入ctrl+z结束,

//这是由while循环中的gets(str)决定

  char decimal[100];

  int cnt;

  for(int i=0;i<len;i++)

  {

   if(str[i]!=' ')

   {

    if(c==' ')//表示是一个数字的开始 

    {

     cnt=0;

     decimal[cnt]=str[i];

     cnt++;

    }

    else//表示 

    {

     decimal[cnt]=str[i];

     cnt++;

    }

    c=str[i];

   }

   else//表示当前的是空格,如果它的前一个字符是数字的话,表示一个数字找出了 

   {

    if(c!=' ')

    {

     decimal[cnt]='\0';

     n[pos]=atoi(decimal);

     pos++;

    }

    c=str[i];

   } 

  }

  if(c!=' ')//这是字符串最后是一个数字而不是空格的情况

  {

   decimal[cnt]='\0';

   n[pos]=atoi(decimal);

   pos++;

  }

  for(int i=0;i<pos;i++)

   printf("%d ",n[i]); 

  printf("\n");

 }

 getch();

 return 0;

}

奇数行是输入的串,偶数行是对应的数字。

//程序看不懂的话,就自己写一个例子,然后在纸上一个一个地走一遍就懂了。

本回答被提问者采纳
相似回答