首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 語言去除字符串數字前導零:標記法避免指針

     編輯:程式設計疑難解答

需求:從字符串提取數字字符拼接,去除前導零。例:00000hfjkahk353k5hkhdf900kdk45 → 353590045。

核心邏輯:首個非零數字前的零全部跳過

bool started = false; // 是否已遇到第一個非零數字
for (int i = 0; s[i]; i++) {
    if (s[i] >= '0' && s[i] <= '9') {
        if (started || s[i] != '0') { // 已開始 或 當前非零
            if (s[i] != '0') started = true; // 遇到第一個非零
            result[idx++] = s[i];
        }
    }
}
result[idx] = '\0';

完整程序框架

#include <stdio.h>
#include <string.h>
#include <stdbool.h>

int main() {
    char s[1000], res[1000];
    int caseNo = 0;
    while (scanf("%s", s) != EOF) {
        caseNo++;
        int idx = 0;
        bool started = false;
        for (int i = 0; s[i]; i++) {
            if (s[i] >= '0' && s[i] <= '9') {
                if (started || s[i] != '0') {
                    if (s[i] != '0') started = true;
                    res[idx++] = s[i];
                }
            }
        }
        res[idx] = '\0';
        printf("Case #%d:\n%s\n", caseNo, res);
    }
    return 0;
}

關鍵點

  • 不使用指針,僅用下標與布爾標記。
  • started 確保第一個非零數字前的所有零被跳過,之後的零(如 900 中的零)正常保留。
  • 若全為零或無數字,res 為空串,輸出空行符合題意。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved