You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中将char* argv[1]转为int并无警告打印的方法及报错修正

解决printf格式不匹配的警告与异常输出问题

你遇到的问题根源非常明确:你在printf里传错了参数类型。

看你代码里的这一行:

printf("key_length = %d", &key_length);

%d格式符要求对应的参数是int类型的实际数值,但你传的&key_length是变量的内存地址,类型是int*(指针)。编译器已经通过警告明确提示了你——格式期望int,但实际传入了int*。而运行时输出的奇怪数字,其实是这个内存地址被强制当成int解析后的结果,自然不是你想要的key_length的真实值。

修正后的代码

只需要把&key_length改成key_length,直接传递变量本身的数值即可:

#include <stdio.h>
#include <stdlib.h>
int main(int argc,char* argv[]) {
    int key_length = atoi(argv[1]);
    printf("key_length = %d", key_length);
    return(0);
}

额外补充一句:如果之后你需要打印变量的内存地址,应该使用%p格式符,比如printf("key_length的地址是:%p", &key_length);,这样才符合参数类型的要求。

内容的提问来源于stack exchange,提问作者LinuxCrusher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:46:33