1.前言
这几天闲来无事,刷到一个题:输入一串字符串,将其中的整数剔除出来并且求和。 在这里会用到一个函数:
int atoi(const char *str) 作用:将str 所指向的字符串转换为一个整数
使用这个函数的过程中需要注意的是输入的字符串最好是数字的字符串,比如“1234”,而不是字母等和数字的混合,这样的话是无法转换出来其中的整数的。 但是亲测了一种情况是可以的:字符串中先是数字,然后是其他字符。比如:“1234aaa”,“1234aaa666”这样的话是可以返回1234这个整数的。
2.代码
OK,那接下来就将实现的代码给大家分享一手(代码注释一应俱全):
#include <stdio.h>
#include <stdlib.h>
#define uint32 unsigned int
#define uint8 unsigned char
uint8 JudgeIsNum(char c)
{
if(c >= 48 && c <= 57) {
return 1;
} else {
return 0;
}
}
long StringToInt(char *string, uint8 size)
{
uint8 i = 0;
char temp[10] = {0};
for (i = 0; i < size; i++) {
temp[i] = *string;
string++;
}
return atoi(temp);
}
void StringHandle(char *string)
{
uint8 intCount = 0;
uint8 intBit = 0;
uint8 i = 0;
uint8 j = 0;
char g_numInString[20][10] = {0};
long g_intInString[20]= {0};
long sum = 0;
while(*string)
{
if(JudgeIsNum(*string) && JudgeIsNum(*(string + 1))) {
g_numInString[intCount][intBit] = *string;
intBit++;
} else if (JudgeIsNum(*string) && !JudgeIsNum(*(string + 1))) {
g_numInString[intCount][intBit] = *string;
intCount++;
intBit = 0;
} else {
intBit = 0;
}
string++;
}
for (i = 0; i < intCount; i++) {
for(j = 0; g_numInString[i][j] != '\0'; j++) {
}
g_intInString[i] = StringToInt(g_numInString[i], j);
printf("字符串中的整数依次为:%ld\r\n", g_intInString[i]);
}
for (i = 0; i < intCount; i++) {
sum += g_intInString[i];
}
printf("其中所有整数的和为:%ld\r\n", sum);
}
void main(void)
{
char input_string[80] = {0};
printf("请输入一段字符串:");
gets(input_string);
StringHandle(input_string);
}
3.结果展示
此为运行的结果,有图有真相~ 写在最后,喜欢作者的欢迎关注咱自己的公众号"脑补空间”,会为大家推送更多推文~
|