Rechercher : dans
Par :

Erreur de segmentation langage c

Dernière réponse le 6 mar 2009 à 18:48:22 flavdu44, le 6 mar 2009 à 10:51:58 
 Signaler ce message aux modérateurs

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;
}

Configuration: Linux
Firefox 3.0

Meilleures réponses pour « erreur de segmentation langage c » dans :
[Langage C] C/C++ Erreur de segmentation Voir Qu'est ce qu'une erreur de segmentation Vous êtes en train de développer une application sous Linux en C/C++. Tout va bien, ça compile, les oiseaux chantent. Donc vous lancez votre application pour la tester. Et vous obtenez l'un de ces deux...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Langage C - Les types de données VoirLes types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...

2

flavdu44, le 6 mar 2009 à 11:18:44

Je ne suis pas sur car je débute mais je ne devrai pas utiliser un tableau avec getchar?

Répondre à flavdu44

3

Char Snipeur, le 6 mar 2009 à 11:21:56
  • +1

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. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

6

Char Snipeur, le 6 mar 2009 à 11:42:35

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é. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

7

 fiddy, le 6 mar 2009 à 11:54:36

@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

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.
Google is your friend

Répondre à fiddy