По какой-то причине мой второй массив символов (var2) сливается с первым (var1). Вот мой код:Мои массивы символов сливаются в C
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main()
{
char var1[5] = "Hello";
char var2[5] = "World";
printf("This program can write:\t%s\t%s\n", var1, var2);
getch();
return 0;
}
после компиляции, я получил следующую печать:
Эта программа может написать: Hello WorldHello
Когда я изменил код printf("This program can write:\t%s\n", var2);
I получил следующую печать:
Эта программа может написать: WorldHello
Таким образом, ясно, что var1 объединяется с var2.
Это какая-то ошибка компилятора. Если да, то как я могу это исправить? Я попытался переустановить MINGW, но я все равно получаю те же результаты.
Большое спасибо
Не указывать размер массива. Пусть компилятор имеет размер 6 с символом 'char var1 [] =" Hello ";' который включает в себя конечный нулевой символ. – chux
Большинство компиляторов должны были предупредить об этом, кстати. – Dummy00001
Ваши массивы нуждаются в еще одном символе, добавленном к концу, чтобы обнулить их. printf будет искать конец строки, используя символ NULL, который не имеет строки «Hello». Попробуйте изменить 'var1' на размер 6 и изменить« Hello »на« Hello \ 0 ». Затем сделайте то же самое для 'var2' – Gophyr