0

printf 呼び出しを 1 回だけ使用して、argv から受け取った文字列からすべての文字の ASCII 値を出力したいと考えています。

このようなものですが、有効な文字 ( != 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]);

0 から strlen(argv[1]) までの for ループを使用したくありません。印刷呼び出しを 1 つだけ使用する必要があります。

argv[1] = "a" の場合、次のみを出力したい: string is a , in ascii = 0x61

argv[1] = "ab" の場合、次のみを出力したい: string is ab, in ascii = 0x61 62

問題は、ガベージデータを印刷したくないことです

4

1 に答える 1

5

ループなしではこれを行うことはできません。printfスタックの特定の深さのみを検索し、常に設定された数の値を出力します。可変数の値を探すようにすることはできないため、ループが最適な選択です。

char *ptr = argv[1];
while (ptr) printf("%X ", *ptr++);

(技術的には、これはwhileループであり、ループではありませんfor)。

于 2012-09-16T15:40:33.807 に答える