操作下面的代碼返回以下結果:爲什麼vsprintf中只在第一個字符
Input was: 6789
Vsprintf Buffer: 54
爲什麼vsprintf
緩衝器僅返回54?
#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'並將其整數值轉換爲字符串。 '* xy'是'xy'的第一個字符。你故意單挑出來,就在那裏。爲什麼這個問題呢? – AnT
如果你不喜歡結果,請**總是**包括你的預期結果是什麼。 – Gerhardh