在c语言中,如何从键盘输入一串包含数字和字母的字符串,以连续的数字构成一个整数,超过六个则另外组成

在c语言中,如何从键盘输入一串包含数字和字母的字符串,以连续的数字构成一个整数,超过六个则另外组成一个数

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define INI 20
#define INC 10
char* input; //指向动态数组

int get_input(); //用于接收输入值的函数,使用动态数组可以任意输入,无大小限制
void ini(); //系统初始化
bool is_exit(); //检测是否退出
int split(); //将字符串分解出6位的数字
bool is_number(char number); //判断一个char类型的元素是否为数字
void delete_all(); //删除动态数组

int main(){
ini();
while (1){
get_input();
if (is_exit())
break;
split();
delete_all();
}
delete_all();
return 0;
}
int get_input(){
int limit = INI,cnt = 0;
char ch;
input = (char *)malloc(sizeof(char)*INI);


while ((ch = getchar())!='\n'){
if (cnt + 1 >= limit){ //如果数组大小不够,那么重新申请更大的空间
char* tmp = input;
limit += INC;
input = (char *)malloc(sizeof(char)*limit);
for (int i = 0; i < cnt; ++i)
input[i] = tmp[i];
}
input[cnt++] = ch;
}
input[cnt] = '\0';
return 0;
}
int split(){
int number = 0;
int index = 0;
int tag = 0,cnt = 1,is_six = 0;
while (input[index]!='\0'){
if (is_number(input[index])&&is_six!=6){ //如果是数字,同时数字位数没有达到6
tag = 1; //标志经过了数字元素
number = number * 10 + input[index] - '0';  //计算值的大小
is_six++;
}
else{ //如果是非数字那么打印之前的数字
if (tag == 1){
printf("#%d:\t\t%d\n", cnt++, number);
tag = number = 0;
if (is_six == 6){ //将数字位数的标记置为0
is_six = 0;
continue;
}
is_six = 0;
}
}
index++;
}
if (tag == 1){ //打印以数字结尾的最后一个数字
printf("#%d:\t\t%d\n", cnt++, number);
tag = number = 0;
}
return 0;
}
bool is_number(char number){
if (number <= '9' && number >= '0')
return true;
return false;
}
bool is_exit(){
if (strcmp(input, "exit") == 0)
return true;
return false;
}
void ini(){
printf("请输入字符串:(exit退出)\n");
}
void delete_all(){
free(input);
input = NULL;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-25
先将这一串字符放入数组中,然后自己写一个函数(注意这个函数一定要接收刚才的数组),在函数中创建无符号变量l来保存字符串中数字的个数.再建立一个(长度为7的字符数组)的数组(这个数组的长度可以视数据总长而定).之后就可以使用嵌套for循环(内层循环变量l,外层只需判断字符串是否结束并操控第二维),if判断(要判断的是ASCII 30h~39h).

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网