Linux Kernel = 2.6.32-41-родовое # 94-Ubuntu
Язык: CКак Sprintf работает в C
фрагмент кода:
#include <stdio.h>
int main()
{
char buf[5];
int index = 0;
for (index = 0; index < 5; index++)
{
sprintf(buf,"sud_%d", index);
printf("for index = %d\n",index);
printf("buf = %s\n",buf);
}
return 0;
}
Question1: Почему выше фрагмент кода переходит в цикл при выполнении вышеуказанного кода?
Question2: Требуется ли sprintf, чтобы его последний бит целевого буфера заполнялся 0 или '\ 0?
Если я сделал буфер размером 6 (buf [6]) в приведенном выше коде, он отлично работает.
может кто-нибудь, пожалуйста, дайте мне знать причину такого поведения?
С уважением, Sudhansu
Привет, Спасибо, что ответили на вопрос, можете ли вы быть более конкретным, почему это происходит. Я добавил одно целое к опубликованной программе и, похоже, работает по своему желанию. Итак, вопрос в том, является ли проблема выравнивания памяти? #include int main() { char buf [5]; int index = 0; int i = 0; for (index = 0; index <5; index ++) { sprintf (buf, "sud_% d", index); printf ("для индекса =% d \ n", индекс); printf ("buf =% s \ n", buf); } возвращение 0; } С уважением, Sudhansu –
user3292886