如何将char * argv [1]转换为int并在C中重复打印而不发出警告

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将char * argv [1]转换为int并在C中重复打印而不发出警告相关的知识,希望对你有一定的参考价值。

我想将argv [1]转换为int。但我得到这个警告:

xorcipher.c:7:9: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat=]

而printf显示我

-799362156

如果我打字

./xorcipher 4

怎么纠正这个?

这是我的代码:

#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);
}
答案

您正在传递key_length的地址,其中错误表明,printf只需要该值。试试这个:

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

请参阅C格式说明符上的this tutorial

另一答案

printf("%d")预期的类型是int。 你给的是指向int的指针。

所以你应该改变

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

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

以上是关于如何将char * argv [1]转换为int并在C中重复打印而不发出警告的主要内容,如果未能解决你的问题,请参考以下文章

将“argc”拼写为“argv”会导致 char ** 和 int 之间的比较 - 为啥?

如何将字符串数组转换为 Char * 数组 c++

将 char* 转换为 unsigned char*

将文本文件拷贝并改标点为空格,大写为小写

char *怎样转成int

c++中wchar转char