以下のコード上で動作しているvsprintfの次の値を返します。は、なぜ最初の文字だけ
Input was: 6789
Vsprintf Buffer: 54
なぜ唯一の54を返すvsprintf
バッファがありますか?
#include <stdarg.h>
#include <stdio.h>
void vout(char *string, char *fmt, ...);
char fmt1 [] = "%d";
int main(void)
{
char string[32];
char *xy = "6789";
vout(string, fmt1, * xy);
printf("Input was: %s\n", xy);
printf("Vsprintf Buffer: %s\n",string);
}
void vout(char *string, char *fmt, ...)
{
va_list arg_ptr;
va_start(arg_ptr, fmt);
vsprintf(string, fmt, arg_ptr);
va_end(arg_ptr);
}
「54」は「6」のASCIIコードです。 –
しかし、それはあなたのコードで何をしているのかを正確に明示的に示しています。 'xy'の最初の文字だけを' vout'に渡し、その整数値をstringに変換します。 '* xy'は' xy'の最初の文字です。あなたは意図的にそれを自分で見つけました。それではなぜ質問ですか? – AnT
結果が気に入らない場合は、**常に**期待どおりの結果が含まれていてください。 – Gerhardh