在单个printf调用中从argv字符串打印ascii值

0 c argv

我想打印从argv收到的字符串中所有字符的ascii值,只使用一个printf调用.

这样的东西,但只打印有效的字符(!= 0):

printf (" string is %s , in ascii = 0x%X %X %X %X", argv[1], 
          argv[1][0], argv[1][1], argv[1][2], argv[1][3]);
Run Code Online (Sandbox Code Playgroud)

我不想使用for循环,从0到strlen(argv [1]).我只需要使用一次打印电话.

如果argv [1] ="a",那么我只想打印:string是a,ascii = 0x61

如果argv [1] ="ab",那么我只想打印:string是ab,ascii = 0x61 62

问题是我不想打印垃圾数据

eps*_*lon 5

没有循环就不能这样做.printf只会在堆栈中查找一定的深度,并始终打印一定数量的值.你不能让它寻找可变数量的值,所以循环是你最好的选择:

char *ptr = argv[1];
while (ptr) printf("%X ", *ptr++);
Run Code Online (Sandbox Code Playgroud)

(从技术上讲,这是一个while循环,而不是for循环).

  • 如果为了性能或方便而只需要一次printf()调用,只需使用sprintf()和strcat()来预先创建字符串. (2认同)