我想从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]);
我不想使用for循环,从0到strlen(argv [1])。我只需要打一个打印电话。
如果argv [1] =“a”,那么我只想打印:string是a,ascii = 0x61
如果argv [1] =“ab”,那么我只想打印:string是ab,ascii = 0x61 62
问题是我不想打印垃圾数据
答案 0 :(得分:5)
如果没有循环,你就无法做到这一点。 printf
只会查找堆栈中的某个深度,并始终打印一定数量的值。你不能让它寻找可变数量的值,所以循环是你最好的选择:
char *ptr = argv[1];
while (ptr) printf("%X ", *ptr++);
(从技术上讲,这是一个while
循环,而不是for
循环。