This repository has been archived on 2019-08-09. You can view files and clone it, but cannot push or open issues or pull requests.
s6-pa-tp/TP3/realloc.c

67 lines
1.5 KiB
C
Raw Normal View History

2017-03-10 11:30:49 +01:00
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
// 2.2.1 isspace vérifie si son argument est un caractère d'espacement
// Elle est responsable du fait que le programme n'imprime que le premier mot envoyé
// 2.2.2
int main() {
int i, taille_chaine = 1, taille_vect = 16;
char *chaine = malloc(taille_vect * sizeof(char));
char *chaine_temp;
char c;
c = getchar();
while (! isspace(c)) {
taille_chaine++;
if (taille_chaine > taille_vect) {
taille_vect += 8;
chaine_temp = malloc(taille_vect * sizeof(char));
for (i = 0; i < taille_chaine; i++) {
chaine_temp[i] = chaine[i];
}
free(chaine);
chaine = chaine_temp;
}
chaine[taille_chaine-1] = c;
c = getchar();
}
for (i = 0; i < taille_chaine; i++) {
putchar(chaine[i]);
}
free(chaine);
putchar('\n');
return 0;
}
// 2.2.4
int main4() {
int i, taille_chaine = 1, taille_vect = 16;
char *chaine = malloc(taille_vect * sizeof(char));
char c;
c = getchar();
while (! isspace(c)) {
taille_chaine++;
if (taille_chaine > taille_vect) {
taille_vect += 8;
chaine = realloc(chaine, taille_vect * sizeof(char));
}
chaine[taille_chaine-1] = c;
c = getchar();
}
for (i = 0; i < taille_chaine; i++) {
putchar(chaine[i]);
}
free(chaine);
putchar('\n');
return 0;
}