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] Help

Florent9812
Florent9812
Niveau 24
10 octobre 2018 à 14:38:35

Hello, voilà j'ai un soucis avec mon code C, on doit faire un programme qui compte le nombre de caractères d'une chaîne.. Mais mon code ne n'affiche rien^^

int count(char m[])
{
int i = 0;
while (m[i] != '\0')
{
i += 1;
}
return i;
}

void count_character(char n)
{
int size = count(n);
printf("size = %d", size);
}

int main()
{
count_character('test\0');
}

godrik
godrik
Niveau 30
10 octobre 2018 à 15:04:01

Et ca compile ce truc? Il y a des problemes de type partout.

(Aussi utilise la balise code la prochaine fois que tu postes ici.)

MrAnge
MrAnge
Niveau 10
10 octobre 2018 à 19:58:35

Plusieurs soucis :

Si ce code compile je veux savoir comment :hap: :
count_character('test\0');

entre simple quotte (touche 4) on peut placer 1 lettre, pas plus. Entre double quotte (touche 3) tu peut en mettre autant que tu veux.

De plus une chaîne de caractère en C (pour les argument de fonctions en tout cas) on utilise
char *ta_chaine

et dans ton printf à la place de %d il faut mettre %ld je crois

normalement avec ces infos tu devrais pouvoir finaliser ton code :ok:

aAardvark
aAardvark
Niveau 75
10 octobre 2018 à 22:47:43

Bon, ça fait quelque temps que j'ai pas écrit en C et normalement le mieux serait quand même que tu cherches un peu plus de toi même, mais vu que ça fait quelques lignes, c'est l'occasion de se remettre dans le bain... :hap:

Et je pense que ta fonction au milieu est plutôt inutile pour ce qu'elle fait, mais c'est une question de forme.



int count_char(char m[]);

int main()
{
    int n;
    n = count_char("test");
    printf("%d\n", n); // on aurait pu directement remplacer l'argument n par le retour de count_char
}


int count_char(char m[]) // (char * m) marche aussi sans warning je crois, vu que ça revient au même (?)
{
    int i = 0;
    while (m[i] != '\0') // équivaut à (*(m+i) != 0)
        i++;

    return i;
}

J'ai pas compilé par contre, donc à voir si j'ai pas fait d'erreur...

A noter que que si jamais tu passe une chaîne de caractère qui ne se finit pas par un caractère nul \0, ton programme plantera très certainement. Mais bon c'est comme ça le C, on doit traiter la problématique en amont :noel:

Dans ce genre de contexte simple, il me semble qu'il y a équivalence entre la syntaxe pointeur et tableau, mais attention car dans d'autres cas les différences sémantiques sont plus compliquées.

On aurait même pu se payer le luxe d'utiliser l'incrémentation directement ici while (m[i++] != '\0'); mais ça c'est pour se la péter un peu, c'est pas forcément plus lisible :o))

Message édité le 10 octobre 2018 à 22:48:11 par aAardvark
Florent9812
Florent9812
Niveau 24
11 octobre 2018 à 20:52:17

Merci d'avoir pris le temps de me répondre :)

ShowBekS_75
ShowBekS_75
Niveau 7
13 octobre 2018 à 03:54:41

Tu veux juste un len en fait si je comprends bien ?
Je sais pas que ce que tu fais et où mais c'est genre basique de chez basique.
Il te faut juste parcourir une chaîne de caractère (une string, char*) et d'afficher le compteur.

Si tu veux une fonction réutilisable dans une lib perso tu check la fonction length qui existe ABSOLUMENT partout et tu la convertis en C.

Sinon c'est assez court donc bon....


#include <stdio.h>

void main() {
   char* taChaine = "je veux la len de cette phrase.";
   int i = 0;

   while(taChaine[i]) {
       i++;
   }
   printf("%d\n", i);
}
Message édité le 13 octobre 2018 à 03:55:57 par ShowBekS_75
Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment