CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C] Erreur sur mon code

Rafya
Rafya
Niveau 7
23 avril 2014 à 20:41:45

Bonjour,
Je ne suis pas très bon en programmation, je tente de créer un programme qui doit supprimer les espaces d'une chaine de caractères mais cela ne marche pas.
Quelqu'un peut-il me corriger ?
Voici le code :

  1. include <stdio.h>
  2. include <string.h>
  3. include <stdlib.h>

char *supp_esp(char *ch_in){
int i=0;
int j=0;

int a = strlen(ch_in);
while(i<=a){
if(*(ch_in+i)==' '){
for(j=i;j<=a;j++){
*(ch_in+j)=*(ch_in+(j+1));}
}
i++;}
return ch_in;
}

int main(){
char *chn = "re s sas ser ";
char *chn1;
chn1=malloc(100*sizeof(char));
chn1 = supp_esp(chn);
printf("%s",chn1);
}

Merci :)

Rafya
Rafya
Niveau 7
23 avril 2014 à 20:44:34

Je tient à préciser que code::blocks ne m'affiche aucune erreur mais que quand j'éxécute le programme une fenêtre windows m'indique que le programme a cessé de fonctionner.
Désolé pour le double post :hap:

Pseudo supprimé
Pseudo supprimé 23 avril 2014 à 20:50:12

Je m'y connais pas super bien en C (voire pas du tout) mais c'est normal que tu ai des traitements en dehors du main ?

lokilok
lokilok
Niveau 16
23 avril 2014 à 20:50:33

Déjà, utilise pastbin, ensuite chn1 ne sert a rien, et la valeur de feront de ta fonction non plus.

Tu ne modifie pas une copie de la chaîne mais la chaîne en elle même la.

Pseudo supprimé
Pseudo supprimé 23 avril 2014 à 20:51:20

Au temps pour moi j'ai mal vu sans l'indentation (PasteBin c'est bien pour ça aussi quand tu veux poster du code sur ce forum ça évite les erreurs de lectures comme je viens de faire

lokilok
lokilok
Niveau 16
23 avril 2014 à 20:53:10

Aussi une for est plus logique qu'un while, et pour accéder a un caractère de ta challenge utilise [], c'est bien plus simple et logique.

Rafya
Rafya
Niveau 7
23 avril 2014 à 20:58:49

J'ai modifié mon programme mais j'ai toujours le même proclème :(
http://pastebin.com/raw.php?i=K6Xcuzb6

Gleuh
Gleuh
Niveau 10
23 avril 2014 à 21:00:47

Tu devrais utiliser de meilleurs noms pour tes variables. :(

Pseudo supprimé
Pseudo supprimé 23 avril 2014 à 21:03:11
  1. include <stdio.h>
  2. include <string.h>
  3. include <stdlib.h>

char *supp_esp(char *ch_in){
int i;
int j=0;

int a = strlen(ch_in);
for(i=0;i<=a;i++){
if(*(ch_in+i)==' '){
for(j=i;j<=a;j++){
*(ch_in+j)=*(ch_in+(j+1));
j++;
}
}
}
return ch_in;
}

int main(){
char *chn = "re s sas ser ";
char *chn1;
chn1=malloc(100*sizeof(char));
chn1 = supp_esp(chn);
printf("%s",chn1);
}
en faisant ça ? Je suis pas sur du tout j'essaie de t'aider mais je t'avoue que je suis en train de faire autre chose en même temps donc comme je connais pas trop le langage je dois pas être super adroit ^^

Rafya
Rafya
Niveau 7
23 avril 2014 à 21:07:09

J'ai essayé ton programme mais j'ai le même problème :-(

lokilok
lokilok
Niveau 16
23 avril 2014 à 21:19:34

Ça aurait été mieux d'utiliser le colorateur syntaxique... et aussi de donner le lien du pastebin et pas du raw pf

lokilok
lokilok
Niveau 16
23 avril 2014 à 21:22:08

Et aussi essaye d'indenter ton code correctement parce que la c'est le bordel hap

lokilok
lokilok
Niveau 16
23 avril 2014 à 21:25:27

Sinon ton programme plante dans trois cas :
- quand i est égal à a.
- quand j est égal à a-1.
- quand j est égal à a.

Rafya
Rafya
Niveau 7
23 avril 2014 à 21:31:30

Je crois que l'erreur venait des inégalités strictes, mais en fait ça marche toujours pas :(

J'ai refait le pastebin : http://pastebin.com/nHXAAe2Q

lokilok
lokilok
Niveau 16
23 avril 2014 à 21:33:47

Ton programme plante toujours quand j est égal à a-1.

Et c'est toujours indenté n'importe comment hap

lokilok
lokilok
Niveau 16
23 avril 2014 à 21:34:51

Et chnbis ne sert strictement a rien, comme le fait que ta fonction retourne quelque chose.

Rafya
Rafya
Niveau 7
23 avril 2014 à 21:39:20

J'ai modifié la boucle while et changé le for du j mais toujours le même problème
J'ai essayé de modifier l'indentation je sais pas si ça te convient : http://pastebin.com/Ms1e2385

En tout cas merci de ton aide :ok:

godrik
godrik
Niveau 30
23 avril 2014 à 21:40:07

Le probleme vient certainement du fait que tu modifie une chaine statique. Copies cette chaines dans le tas et fait ke teaitement dans le tas et ca ce passera certainment mieux.

Rafya
Rafya
Niveau 7
23 avril 2014 à 21:41:48

Ma fonction doit forcément me retourner la chaine de caractères, on me l'impose ...

lokilok
lokilok
Niveau 16
23 avril 2014 à 21:47:46

Rafya, ok, mais du coups faut faire une copie de la chaîne et modifier la copie, sinon ça c'est complètement idiot je trouve.

Et pour l'indentation, met le } sur une ligne rien que pour lui et place le au début du scop (une indentation de moins que son contenu quoi) c'est bien plus jolie.

Sinon pour le coup de la chaîne statique je connaissais pas ça.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment