gpt4 book ai didi

c编程打印char *的ascii值

转载 作者:太空宇宙 更新时间:2023-11-04 08:24:58 24 4
gpt4 key购买 nike

我正在尝试打印 char* 的 ascii 值(ascii int 数字),例如 Aascii table 上打印为 65 .

这是我的代码。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
int i = 0;

printf(" Hello World \n");
printf("argv[0] is %s! \n",argv[0]);
printf("argv[1] is %s! \n",argv[1]);
printf("argv[2] is %s! \n",argv[2]);
printf("argv[3] is %s! \n",argv[3]);

if( argc == 4 )
{
printf("The first argument supplied is %s\n", argv[1]);
printf("The second argument supplied is %s\n", argv[2]);
printf("The third argument supplied is %s\n", argv[3]);
}
else if( argc > 4 )
{
printf("Too many arguments supplied.\n");
exit( 1 );
}
else
{
printf("Not enough arguments supplied. \n");
exit( 1 );
}

for(i = 1; i < 100; i++)
{
printf("i is %d argv[i] %d\n", i, argv[i]);
}

return(0);
}

我希望从命令中输入这些值,所以这就是我输入的内容。

./a.out A B C

当我编译它时,我收到了这个警告。

warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘char *’

如果我将 argv[i] 转换为 (int) 我会收到此消息。

warning: cast from pointer to integer of different size

如果我将 argv[i] 转换为 (int *) 我会收到此消息。

warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘int *’

最佳答案

    printf("i is %d argv[i] %d\n", i, argv[i]);

是导致行的问题。使用不正确的格式说明符是 undefined behaviour在 C 中。

argvchar** 类型,但 %d 格式说明符需要一个 int。因此,要打印参数的 ascii 值,您需要对 argv 进行嵌套循环。

    for(j=1;j<argc; j++) {
for(i=0;argv[j][i];i++) {
printf("i is %d argv[i] %d\n", j, argv[j][i]);
}
}

请注意,您的循环条件不正确。每个参数只有 strlen(argv[j]) 个字符。所以你不能任意打印 100 个字符。

移动这些 printf 语句

printf("argv[0] is %s! \n",argv[0]);
printf("argv[1] is %s! \n",argv[1]);
printf("argv[2] is %s! \n",argv[2]);
printf("argv[3] is %s! \n",argv[3]);

在参数检查下方,以便您仅在参数检查之后打印它们。否则,如果传递的参数较少,您最终可能会访问不存在的参数。

关于c编程打印char *的ascii值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31020424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com