Erreur de segmentation langage c
flavdu44
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Lorsque j'éxecute se programme qui doit lire une chaine de caractère et afficher les caractères minuscules en majuscule et inversement.
Dans le terminale s'affiche "erreur de segmentation et je ne voie pas pourquoi.
Voici mon programme:
#include <stdio.h>
int main(void) {
printf("Saisissez votre ligne de texte:\n");
int i;
char c[i];
c[i]=getchar();
for(i=0;i<100;i++)
if(c[i]>=94)
c[i]=c[i]-32;
if ((c[i]>64)&(c[i]<94))
c[i]=c[i]+32;
printf("%c\n",c[i]);
putchar(c[i]);
return 0;
}
Lorsque j'éxecute se programme qui doit lire une chaine de caractère et afficher les caractères minuscules en majuscule et inversement.
Dans le terminale s'affiche "erreur de segmentation et je ne voie pas pourquoi.
Voici mon programme:
#include <stdio.h>
int main(void) {
printf("Saisissez votre ligne de texte:\n");
int i;
char c[i];
c[i]=getchar();
for(i=0;i<100;i++)
if(c[i]>=94)
c[i]=c[i]-32;
if ((c[i]>64)&(c[i]<94))
c[i]=c[i]+32;
printf("%c\n",c[i]);
putchar(c[i]);
return 0;
}
A voir également:
- Erreur de segmentation langage c
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
- Java code erreur 1603 ✓ - Forum Windows
4 réponses
je pense que non, rien ne doit le choquer.
Si tu regarde l'algorithme le gars pense que getchar va mettre la chaine de caractère dans c.
Un exemple typique du gars qui n'a rien compris du tout aux tableaux et à la manière de les employé.
Conseil : revoir le cour.
Si tu regarde l'algorithme le gars pense que getchar va mettre la chaine de caractère dans c.
Un exemple typique du gars qui n'a rien compris du tout aux tableaux et à la manière de les employé.
Conseil : revoir le cour.
Il est clair que le programme n'a pas été assez réfléchi avant d'être codé et compiler.
pour neo : la segmentation ne dépend pas de la longueur de la chaîne (strlen) mais de la taille mémoire qui lui a été alloué.
pour neo : la segmentation ne dépend pas de la longueur de la chaîne (strlen) mais de la taille mémoire qui lui a été alloué.
@flavdu44 :
int i;
char c[i];
Tu initialises un tableau de char avec un entier non défini.
Tu devrais faire #define MAX 100 (puisque vu ton code ton tableau à une taille de 100) et déclarer ton tableau en
c[i]=getchar();
Même problème, i n'est toujours pas connu. Et getchar(), va te lire un seul caractère et non une chaîne comme tu le souhaiterais. Utilise plutôt scanf ou fgets pour lire une chaîne de caractères.
Pour l'affichage du tableau modifié, un simple puts(c) suffira. Pas besoin d'afficher caractère par caractère.
int i;
char c[i];
Tu initialises un tableau de char avec un entier non défini.
Tu devrais faire #define MAX 100 (puisque vu ton code ton tableau à une taille de 100) et déclarer ton tableau en
char c[MAX];
c[i]=getchar();
Même problème, i n'est toujours pas connu. Et getchar(), va te lire un seul caractère et non une chaîne comme tu le souhaiterais. Utilise plutôt scanf ou fgets pour lire une chaîne de caractères.
Pour l'affichage du tableau modifié, un simple puts(c) suffira. Pas besoin d'afficher caractère par caractère.