Problème boucle for en C
Ouss91
-
Ouss91 Messages postés 35 Date d'inscription Statut Membre Dernière intervention -
Ouss91 Messages postés 35 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je débute en C.
Je réalise un petit programme facile mais vu que je suis débutant j'ai du mal.
Ci-dessous respectivement le programme my_strlen qui est sensé calculer le nombre de caractères (dans string.c), le programme principal appelant la fonction my_strlen (main.c) et l'erreur :
L'erreur quand je compile le fichier string.c :
undefined reference to `main'
collect2: error: ld returned 1 exit status
Quand je compile le programme main.c, le programme demande d'entrer un string puis plus rien.
Help please :/
Je débute en C.
Je réalise un petit programme facile mais vu que je suis débutant j'ai du mal.
Ci-dessous respectivement le programme my_strlen qui est sensé calculer le nombre de caractères (dans string.c), le programme principal appelant la fonction my_strlen (main.c) et l'erreur :
#include<stdio.h> #include<string.h> int my_strlen(char tab[]) { int nbChar = 0; for (int i=0; tab[i] != '\0'; i++) { nbChar++; } return nbChar; } #include<stdio.h> #include<string.h> #include </home/debian/Algorithmique/AlgoAvancé/TP1/string.c> int main(){ char chaineChar[]={'o','k','\0'}; printf("Entrer une chaîne de caractères : "); scanf("%s", chaineChar); printf("%s", "Il y a ",my_strlen(chaineChar)," caractères.","\n"); }
L'erreur quand je compile le fichier string.c :
undefined reference to `main'
collect2: error: ld returned 1 exit status
Quand je compile le programme main.c, le programme demande d'entrer un string puis plus rien.
Help please :/
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Problème boucle for en C
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Idm for mac - Télécharger - Téléchargement & Transfert
- Copytrans heic for windows - Télécharger - Visionnage & Diaporama
- Instagram for pc - Télécharger - Divers Communication
- Microsoft store download for pc - Guide
8 réponses
Salut !
Ta fonction main est de type int (comme toujours), tu dois donc renvoyer un entier à la fin.
0 veut dire qu'il n'y a pas d'erreur, et un autre nombre si. Rajoute donc un return 0; à la fin de ta fonction main pour commencer :p
Ta fonction main est de type int (comme toujours), tu dois donc renvoyer un entier à la fin.
0 veut dire qu'il n'y a pas d'erreur, et un autre nombre si. Rajoute donc un return 0; à la fin de ta fonction main pour commencer :p
Salut,
du coup j'ai rajouté un return 0;
mais quand je compile le fichier string.c, la même erreur (comme quoi il manque un main())
:/
du coup j'ai rajouté un return 0;
mais quand je compile le fichier string.c, la même erreur (comme quoi il manque un main())
:/
Et tu compiles le tout comment ? Car on dirait que tu essayes de compiler indépendamment ton autre fichier, et donc forcément il te crie dessus car il trouve pas la fonction main.
Par exemple avec gcc tu dois forcément commencer par ton fichier main.
Par exemple avec gcc tu dois forcément commencer par ton fichier main.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Exemple pour la compilation du main.c : gcc -o main main.c
Je complie chaque fichier, pas forcément dans un ordre précis.
Comment compiler du coup?
Je complie chaque fichier, pas forcément dans un ordre précis.
Comment compiler du coup?
et quand je compile main.c, ca affiche bien "Entrer la chaine de caractères : " mais après plus rien...
Bonjour,
Il n'y a pas d'ordre. Il faut compiler tous les fichiers et un seul doit avoir la fonction main().
Tu peux aussi bien séparer les 2 compilations et l'édition des liens en l'écrivant en 3 lignes : les 2 premières produisent des fichiers objets (.o) la dernière relie le tout en un executable.
Il n'y a pas d'ordre. Il faut compiler tous les fichiers et un seul doit avoir la fonction main().
gcc -o nom_du_programme string.c main.c
Tu peux aussi bien séparer les 2 compilations et l'édition des liens en l'écrivant en 3 lignes : les 2 premières produisent des fichiers objets (.o) la dernière relie le tout en un executable.
gcc -g -Wall -c main.c gcc -g -Wall -c string.c gcc -Wall main.o string.o -o nom_du_programme
Bonjour Dalfab,
Merci pour ta réponse !
En utilisant ta ligne de compilation (gcc -o nom_du_programme string.c main.c), j'obients l'erreur suivante : multiple definition of `my_strlen'; /tmp/cckbVTUH.o:string.c:(.text+0x0): first defined here
collect2: error: ld returned 1 exit status
Voici les codes :
main.c
#include<stdio.h>
#include<string.h>
#include "/home/debian/Algorithmique/AlgoAvancé/TP1/string.c"
int main(){
char chaineChar[]={'o','k','\0'};
printf("Entrer une chaîne de caractères : ");
scanf("%s", chaineChar);
printf("%s", "Il y a ", my_strlen(chaineChar), " caractères.\n");
return 0;
}
string.c
#include<stdio.h>
#include<string.h>
int my_strlen(char tab[])
{
int nbChar = 0;
for (int i=0; tab[i] != '\0'; i++)
{
nbChar++;
}
return nbChar;
}
Merci pour ta réponse !
En utilisant ta ligne de compilation (gcc -o nom_du_programme string.c main.c), j'obients l'erreur suivante : multiple definition of `my_strlen'; /tmp/cckbVTUH.o:string.c:(.text+0x0): first defined here
collect2: error: ld returned 1 exit status
Voici les codes :
main.c
#include<stdio.h>
#include<string.h>
#include "/home/debian/Algorithmique/AlgoAvancé/TP1/string.c"
int main(){
char chaineChar[]={'o','k','\0'};
printf("Entrer une chaîne de caractères : ");
scanf("%s", chaineChar);
printf("%s", "Il y a ", my_strlen(chaineChar), " caractères.\n");
return 0;
}
string.c
#include<stdio.h>
#include<string.h>
int my_strlen(char tab[])
{
int nbChar = 0;
for (int i=0; tab[i] != '\0'; i++)
{
nbChar++;
}
return nbChar;
}