編程學習網 > 編程語言 > C/C++開發 > 如何用c語言編程對字符串中的整數進行求和(c語言輸入整數求和)
2022
06-22

如何用c語言編程對字符串中的整數進行求和(c語言輸入整數求和)

大家是否在工作生活中遇到過這種情況,由整數數字和其他字符組成的數據,只需要單獨對整數字符進行求和。如果用人工普通方法來計算,未免過于繁瑣且容易出錯,今天編程學習網帶大家了解一下如何用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語言教程歡迎持續關注編程學習網

掃碼二維碼 獲取免費視頻學習資料

Python編程學習

查 看2022高級編程視頻教程免費獲取