Informatică, întrebare adresată de vargad682, 8 ani în urmă

Să se scrie o aplicaţie C/C++ care alocă dinamic memorie pentru "n" şiruri de
caractere, care se vor citi de la tastatură.

Răspunsuri la întrebare

Răspuns de MorowN
0

Răspuns:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main(void) {

// Citim numarul de siruri de caractere

int n;

printf("Numarul de siruri de caractere: ");

scanf("%d", &n);

// Alocam memorie pentru "n" siruri de caractere

char **strings = (char **)malloc(n * sizeof(char *));

if (strings == NULL) {

printf("Eroare la alocarea memoriei pentru vectorul de siruri de caractere.\n");

exit(1);

}

// Citim sirurile de caractere de la tastatura

for (int i = 0; i < n; i++) {

char buffer[100];

printf("Sirul %d: ", i+1);

scanf("%s", buffer);

// Alocam memorie pentru sirul de caractere

int len = strlen(buffer);

strings[i] = (char *)malloc((len+1) * sizeof(char));

if (strings[i] == NULL) {

printf("Eroare la alocarea memoriei pentru sirul de caractere %d.\n", i+1);

exit(1);

}

// Copiem sirul de caractere in locatia de memorie alocata

strcpy(strings[i], buffer);

}

// Afisam sirurile de caractere

printf("Sirurile de caractere sunt:\n");

for (int i = 0; i < n; i++) {

printf("%s\n", strings[i]);

}

// Eliberam memoria alocata

for (int i = 0; i < n; i++) {

free(strings[i]);

}

free(strings);

return 0;

}

Explicație:

În această implementare, am alocat dinamic memorie pentru un vector de "n" şiruri de caractere, apoi am citit "n" siruri de caractere de la tastatură şi le-am stocat în vectorul respectiv. Am alocat dinamic şi pentru fiecare şir de caractere, astfel încât să avem suficientă memorie pentru a stoca şirurile respective. La final, am afişat şirurile de caractere şi am eliberat memoria alocată.

Alte întrebări interesante