如何将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中重复打印而不发出警告的主要内容,如果未能解决你的问题,请参考以下文章