Вам нужно определить размер массива, чтобы сообщить компилятору, сколько места выделить:
char U1[256];
Если вы не знаете размер вашего массива во время компиляции, вы можете динамически выделить память с помощью malloc
:
// #include <stdlib.h>
int *arr;
int n, i;
printf("Number of elements: ");
scanf("%d", &n);
// Allocate n ints
arr = malloc(n * sizeof(int));
printf("Enter %d elements: ", n);
for(i = 0; i < n; i++)
scanf("%d", &arr[i]);
printf("Here they are: ");
for(i = 0; i < n; i++)
printf("%d ", arr[i]);
// Free the array on the end!
free(arr);
Примечание
printf("The %s has %i bytes.", U1, sizeof(U1));
всегда будет печатать 256, так как sizeof
возвращает размер массива, вычитаемый во время компиляции, а не количество символов, только что прочитанных в массиве. Вы можете использовать sizeof(char) * (strlen(U1) + 1)
для вычисления количества байтов, требуемых строкой (+1 происходит от символа NUL-терминатора в конце строки).
вам необходимо выделить память для массива char. – Bill
Это не дубликат. –