大家是否在工作生活中遇到过这种情况,由整数数字和其他字符组成的数据,只需要单独对整数字符进行求和。如果用人工普通方法来计算,未免过于繁琐且容易出错,今天编程学习网带大家了解一下如何用c语言编程对字符串中的整数进行求和
在这里会用到一个函数:
int atoi(const char *str)
作用:将str 所指向的字符串转换为一个整数
使用这个函数的过程中需要注意的是输入的字符串最好是数字的字符串,比如“1234”,而不是字母等和数字的混合,这样的话是无法转换出来其中的整数的。
但是亲测了一种情况是可以的:字符串中先是数字,然后是其他字符。比如:“1234aaa”,“1234aaa666”这样的话是可以返回1234这个整数的。
#include <stdio.h>
#include <stdlib.h>
#define uint32 unsigned int
#define uint8 unsigned char
//判断输入的字符是否为数字
uint8 JudgeIsNum(char c)
{
if(c >= 48 && c <= 57) { //ASCII码位于这些范围内的都是数字
return 1;
} else {
return 0;
}
}
//重新封装atoi函数,加了限制读取进atoi的输入字符数量
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); //atoi为将输入的字符型的数字转换为具有计算能力的整数
}
//此函数为判断字符串中的各个整数,并且计算出所有整数的和
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++; //整数的位数+1
} else if (JudgeIsNum(*string) && !JudgeIsNum(*(string + 1))) { //此次指向的位置是数字,且下一个位置不是数字
g_numInString[intCount][intBit] = *string;
intCount++; //整数的个数+1
intBit = 0; //整数的位数从0开始计数
} else {
intBit = 0;
}
string++; //取下一个字符
}
for (i = 0; i < intCount; i++) {
for(j = 0; g_numInString[i][j] != '\0'; j++) { //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); //此函数为判断字符串中的各个整数,并且计算出所有整数的和
}
结果展示:
以上就是“如何用c语言编程对字符串中的整数进行求和(c语言输入整数求和)”的详细内容,想要了解更多C语言教程欢迎持续关注编程学习网
扫码二维码 获取免费视频学习资料

- 本文固定链接: http://www.phpxs.com/post/9640/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料
查 看2022高级编程视频教程免费获取