У меня проблема с этой маленькой программой в ANSI C. Я хочу сделать программу с тремя функциями - создать массив Dynami c (stworz_tablice), загрузить строку данных - (pobierz_tablice) и распечатать ее (wypisz_tablice).
Итак, программа работает так: мы даем число для нашего массива, поместите строку, и функция должна записать ее в консоли. Например, введите: 4 Fire
Как я могу исправить код, чтобы он работал?
Я думаю, что проблема с mytab = stworz_tablice(n);
, но я пока не знаю, как это исправить.
Когда я запускаю программу, она не принимает строку. Вывод похож на случайные числа вместо букв.
Ввод:
4 Анна
Вывод, который я хочу:
Анна
Вывод, который я получаю каждый раз:
-24244 -24242 0 0 // Некоторые случайные числа, каждый раз разные
#include <stdlib.h>
char *stworz_tablice(int n)
{
char *mytab = (char*)malloc((n+1) * sizeof(char));
if (mytab == NULL)
{
perror("Error in malloc");
exit (1);
}
return mytab;
}
void pobierz_tablice(char *mytab, int n)
{
scanf ("%s", mytab);
}
void wypisz_tablice(char mytab[], int n)
{
for(int i=0; i<n; i++)
printf("%c",mytab[i]);
}
int main(void)
{
int *mytab;
int n;
scanf("%d", &n);
if (n<=0)
{
printf("BŁĄD");
return 0;
}
mytab = stworz_tablice(n);
pobierz_tablice(mytab, n);
wypisz_tablice(mytab, n);
putchar('\n');
free(mytab);
return EXIT_SUCCESS;
}