Imcomprhésion d'un corrigé (langage C)
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Imcomprhésion d'un corrigé (langage C)



  1. #1
    invitebf26947a

    Imcomprhésion d'un corrigé (langage C)


    ------

    Bonjour,,

    je ne comprends pas ce code:

    Code:
    int main(){
    	//char *tab = "azerty,uiop,qsdf";
    	//char *tab1 = NULL;
    	char *tab = "azertykg,uiop,qsdfgh"; 
    	int i = 0, j = 0;
    	char *tab1 = malloc(sizeof(char)*35);
    	
    	while ( *(tab + i) != ','){
    		tab1[i] = tab[i];
    		printf("%c", tab1[i]);
    		printf("\n");
    		i++;
    		}
    	
    	
    	
    	return 0;
    }
    Celui-là que j'ai trouvé marche.
    Mais la première fois, j'ai fais ça:

    Code:
    int main(){
    	//char *tab = "azerty,uiop,qsdf";
    	//char *tab1 = NULL;
    	char *tab = "azertykg,uiop,qsdfgh"; 
    	int i = 0, j = 0;
    	char *tab1 = NULL;
    	
    	while ( *(tab + i) != ','){
    		tab1[i] = tab[i];
    		printf("%c", tab1[i]);
    		printf("\n");
    		i++;
    		}
    	
    	
    	
    	return 0;
    }
    J'ai eu un sefmentation fault.
    Pourquoi?

    Merci.

    ps: On doit stocker une chaine de caracrtère dans un tableau tant qu'on a pas le ,

    -----

  2. #2
    invite43901482

    Re : Imcomprhésion d'un corrigé (langage C)

    oublie ce code il n'est pas correct et affreusement compliqué pour le peu qu'il fasse.

    Mais ton code ne fonctionne pas car tu n'alloues pas de mémoire pour char *tab1

    Code:
    char *tab = "azertykg,uiop,qsdfgh";
    ça c'est dangereux, car si quelqu'un modifie, boum...

    Limite si on veut être correct on ajoute const devant char

    Code:
    const char *tab = "azertykg,uiop,qsdfgh";
    ou plus simple, faut voir simple en C

    Code:
    char tab[] = "azertykg,uiop,qsdfgh";
    Ensuite

    Code:
    char *tab1 = malloc(sizeof(char)*35);
    est totalement inutile dans cette exemple, une simple déclaration statique suffit

    Code:
    char tab1[35];
    Pour le reste j'en parle même pas tellement ça mérite pas considération.

    Par exemple le j sert à quoi?
    Mettre des * dans ce genre d'exemple c'est leurré le débutant.

    Ensuite il alloue de la mémoire, mais ne la libère pas, c'est ni fait ni à faire.
    Le caractère de fin de chaîne n'est pas ajouté '\0'

    Bref prend un bouquin et apprend par toi même, tu feras sûrement mieux du 1er coup.

    Edit : Un débutant ne commence pas par l'allocation dynamique (malloc, calloc, free...), mais statique comme montré dans mon exemple ci-dessus.

    En C pense toujours simple, et ne prend pas tout de suite en compte l'optimisation syntaxique, mais juste algorithmique.

Discussions similaires

  1. Construction d'un automate à partir d'une expression / d'un langage
    Par invite97ba3556 dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 16/12/2012, 14h42
  2. corrigé d'un exercice d'un diodede zener
    Par invite7b860fa8 dans le forum Physique
    Réponses: 7
    Dernier message: 28/10/2012, 16h04
  3. recherche d'un corrigé sujet bac svp
    Par invite8eafe7ff dans le forum Électronique
    Réponses: 16
    Dernier message: 03/03/2008, 16h31
  4. machines thermiques : pb avec le corrigé d'un exo
    Par invite0f0e1321 dans le forum Physique
    Réponses: 1
    Dernier message: 01/06/2006, 19h32