不使用 atoi 将字符串转换为整数

标签 c string integer

如何在不使用给定参数中的 atoi 的情况下将字符串转换为整数?这是我尝试过的:

int main(int argc, char *argv[]){
    for(int i = 1; i < argc; i++){
        const char *p = argv[i];
        int j = 0;
        while(isdigit(*p)){
            j = j * 10 + *p - '0';
            p++;
            printf("%d\n", j);
        }
    }
}

出于某种原因,它会分开并再次重新添加它们。

$ ./a.out 55 6 50 66
5
55
6
5
50
6
66

最佳答案

您正在打印所有中间结果。保存打印输出,直到完成 while 循环。

while(isdigit(*p)){
    j = j * 10 + *p - '0';
    p++;
}

printf("%d\n", j);

关于不使用 atoi 将字符串转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25776715/

相关文章:

无法确定字符串末尾的字符值

python - 如何让用户在 Python 程序中只输入整数值

c - 带有 LibOpenCM3 的 STM32 FreeRTOS

c - 对套接字使用 AES_ctr128_encrypt 时出现 SIGSEGV 错误

c - 替代 container_of()

string - 根据可变字符串长度删除可变字符位置右侧的所有文本

c - 猜谜游戏 - 无法弄清楚为什么它会产生一个大的负整数

c# - 从带有文本引号的列表中解析

c - 在 C 中如何将变量设置为最大可能的数字?

ios - 无法将类型 'Int' 的值转换为预期的参数类型 'UInt32'