Я пишу код, который читается в списке символов (с использованием перенаправления), но строка, в которой хранятся символы, имеет размер 41. Количество символов не приближается к размеру массива , поэтому мне нужно использовать malloc(), чтобы получить точный размер массива. Когда я печатаю массив без использования функции malloc, он печатает символы и другую тарабарщину вместе со строкой. Мне нужно malloc строку, чтобы символы и тарабарщина не были включены.Как использовать функцию malloc() для символа string/array?
Код:
#include <stdio.h>
#include <stdlib.h>
int main() {
char c;
char r1[41];
int a = 0;
while(scanf("%c", &c) != EOF) {
if(c >= 'A' && c <= 'Z' || c == '[' || c == '.' || c == '!') {
r1[a] = c;
a++;
}
}
printf("\nThe string is: %s\n", r1);
return 0;
}
Выход:
The string is TR[!.DFQ▒ ▒ ▒ 這
'NUL' terminator ... –
Ваша' строка' представляет собой массив из 42 указателей на 'char'. Вы хотите 'char string [40 + 1];'. (И, конечно, вам нужно сохранить в нем некоторое значение.) –
В этом коде нет ничего, что бы считывать любые значения из любого места. Таким образом, содержимое вашего массива 'string' не инициализируется, что приводит к дальнейшему неопределенному поведению ... – twalberg