我想打印从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
问题是我不想打印垃圾数据
没有循环就不能这样做.printf只会在堆栈中查找一定的深度,并始终打印一定数量的值.你不能让它寻找可变数量的值,所以循环是你最好的选择:
char *ptr = argv[1];
while (ptr) printf("%X ", *ptr++);
Run Code Online (Sandbox Code Playgroud)
(从技术上讲,这是一个while循环,而不是for循环).