/*
程序功能:
判断输入的字符串是否是int型正整数型
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 10
int chk_data(char *num);
int num[SIZE];
int main(void)
{
char str[SIZE]; //定义一个大小为SIZE的char型数组
int i=0;
int a[SIZE];//存放数字
char b[SIZE];//存放运算符
for(i=0;str[i]!='ok';i++)
{
printf("input :");
scanf("%s", str);
if (chk_data(str) == 0)
{
b[i]=str[i];
}
else
{
a[i]=str[i];
}
}
printf("%d\n",a[i]);
printf("%c\n",b[i]);
printf("%d\n", atoi(str));
}
// 子函数
int chk_data(char *num)
{
int i;
for (i = 0; num[i]; i++) // 遍历形参num(传入实参的大小)
{
if (num[i] > '9' || num[i] < '0') //只要有非数字,就返回错误
{
return 0;
}
}
return 1;
}
我想以ok作为结束标志,但是运行结果就是输入ok还是没有结束,将字符放在b数组,数字放在a数组能实现吗
这么改,是否是想要实现的,供参考:
/*
程序功能:
判断输入的字符串是否是int型正整数型
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 10
int chk_data(char *num);
int num[SIZE];
int main(void)
{
char str[SIZE]; //定义一个大小为SIZE的char型数组
int i=0,k=0,j=0;
int a[SIZE];//存放数字
char b[SIZE];//存放运算符
printf("input :"); // 修改
scanf("%s", str); // 修改
for(i=0;str[i];i++) //for(i=0;str[i]!='ok';i++)
{
if (chk_data(&str[i]) == 0) //if (chk_data(str) == 0)
{
b[j++]=str[i]; //b[i]=str[i];
}
else
{
a[k++]=str[i]-'0'; //a[i]=str[i];
}
}
for (i = 0; i < k; i++)
printf("%d\n",a[i]);
for (i = 0; i < j; i++)
printf("%c\n" ,b[i]);
//printf("%d\n", atoi(str));
return 0;
}
// 子函数
int chk_data(char *num)
{
//int i;
//for (i = 0; num[i]; i++) // 遍历形参num(传入实参的大小)
//{
if (*num > '9' || *num < '0') //只要有非数字,就返回错误
//if (num[i] > '9' || num[i] < '0')
{
return 0;
}
//}
return 1;
}