OVH Cloud OVH Cloud

Super debutant

85 réponses
Avatar
Albert
Bonjour a tous,
Voila je commence le C sur linux ( RH 9 - gcc gcc (GCC) 3.2.2 20030222
(Red Hat Linux 3.2.2-5)
Je fais le prg le + simple possible :

main()
{
int a = 17 , b = 36;
printf("%d\n, a * b );
}
a la compile j'obtients :
[gil@P4LX gil]$ cc -c test.c
test.c:1: erreur d'analyse syntaxique avant « buffer »
test.c:1:36: caractère ' de terminaison manquant
test.c:1:36: AVERTISSEMENT: constante caractère trop longue
test.c:2: erreur d'analyse syntaxique avant « you »
test.c:2: erreur d'analyse syntaxique avant « that »
test.c:3: erreur d'analyse syntaxique avant « enter »
test.c:3:36: caractère ' de terminaison manquant
test.c:3:36: AVERTISSEMENT: constante caractère trop longue
test.c:7:10: AVERTISSEMENT: chaîne de mots multi-lignes sont dépréciés
test.c:7:10: caractère " de terminaison manquant
test.c:7:10: début possible d'une chaîne de mot non terminée
test.c:7: erreur d'analyse syntaxique avant la constante chaîne
[

J'avoue avoir beaucoup (trop) oublie le C quand j'etait jeune mais la je
ne comprends pas. Ne vous moquez pas trop !!

Merci pour les reponses.
gilles

10 réponses

1 2 3 4 5
Avatar
Albert
Le 25/10/05 21:15, dans <435e8442$0$988$,


C'est axactement ce que je ne comprends pas:
le texte est : ( copie/colle)

gil]$ cat test.c
;; This buffer is for notes you don't want to save, and for Lisp evaluation.
;; If you want to create a file, visit that file with C-x C-f,
;; then enter the text in that file's own buffe
void main()
{
int a = 17 , b = 36;
printf("%dn", a * b );
}



Il faut remplacer les ;; par des // car les commentaires en C ne sont pas et
n'ont jamais été des ;;.

Suite au poste precedent j'ai compile,linke et execute tout est ok.

Merci a tous.

Je vais reprendre mes cours de C et autres ( j'etais sur DPS et NOKR
DADA )et j'essayer de l'appliquer a Linux
Un conseil: Quel environemnt graphique Linux vous cconseillez.
Encore Merci


Avatar
Harpo
Albert wrote:

Je vais reprendre mes cours de C et autres ( j'etais sur DPS et NOKR
DADA )et j'essayer de l'appliquer a Linux
Un conseil: Quel environemnt graphique Linux vous cconseillez.
Encore Merci


Je ne m'y connais pas beaucoup en cette matière, mais pour avoir fait
une petite étude, Gtk2 me semblait se ranger dans ceux qui offrent le
plus de fonctionnalités.
Voire aussi 'glade' pour réaliser des squelettes d'applications.

Et mince ! Je me suis encore fait avoir en répondant à une question hors
sujet !

Avatar
Albert

gil]$ cat test.c
;; This buffer is for notes you don't want to save, and for Lisp evaluation.
;; If you want to create a file, visit that file with C-x C-f,
;; then enter the text in that file's own buffe
void main()
{
int a = 17 , b = 36;
printf("%dn", a * b );
}
j'ai qques notions en C et c'est pourquoi je ne comprends pas.



En C, les commentaires sont /* */ ou //, mais pas ;;.

D'ailleurs, emacs est gentil, il te le dit:
'This buffer is for notes you don't want to save, and for Lisp
evaluation'

l'anglais et moi ..

Enlève ces 3 lignes, ajoute un
#include <stdio.h>
et ça devrait mieux se passer.

Pas besoin

Marc Boyer



Avatar
Stephane Zuckerman
Enlève ces 3 lignes, ajoute un
#include <stdio.h>
et ça devrait mieux se passer.

Pas besoin



Ben si. printf() est définie dans stdio.h . Ce n'est pas parce
qu'implicitement gcc ne te dit rien que tu n'as pas à faire ce qu'il faut.
N'importe quel cours bien fait en C te fera rajouter cette petite ligne.

Pour t'en convaincre, je te propose de rajouter -Wall -W comme options à
gcc.

--
"Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce
que je veux !"
"The obvious mathematical breakthrough would be development of an easy
way to factor large prime numbers." (Bill Gates, The Road Ahead)


Avatar
R12y
On Tue, 25 Oct 2005 19:29:38 +0200, Albert wrote:
J'avoue avoir beaucoup (trop) oublie le C


Oublier le C, ça va encore. Mais l'anglais, ça va pas du tout aller.
Tu veux pas remettre ton compilateur en anglais?
Ca t'aiderai beaucoup!

--
Rakotomandimby Mihamina,
http://aspo.rktmb.org/activites/infogerance
Serveurs* sous Debian, Fedora...
(*) Serveurs!?: http://fr.search.yahoo.com/search?p=serveurs+dedies

Avatar
Bruno Desthuilliers

On Tue, 25 Oct 2005, fabrizio wrote:


printf("%dn", a * b );

Vous aviez oublié une double quote ?




Tant qu'on y est, quand même :
main()
{
int a = 17 , b = 36;
printf("%dn, a * b );
}

Il manque un "int" avant le main.



Et un "return 0" à la fin de la
fonction.

Un exit peut etre dans la fonction main() ??


Pas un 'exit', un 'return'. Et - selon la norme -, la fonction main()
*doit* retourner un entier:

int main(void);
ou
int main(int argc, char **argv);



Avatar
Bruno Desthuilliers


Bonjour a tous,
Voila je commence le C sur linux ( RH 9 - gcc gcc (GCC) 3.2.2
20030222 (Red Hat Linux 3.2.2-5)
Je fais le prg le + simple possible :

main()
{
int a = 17 , b = 36;
printf("%dn, a * b );
}
a la compile j'obtients :




Je soupsonne que tu ne compiles pas le code que tu nous
montres, car;

[ gil]$ cc -c test.c
test.c:1: erreur d'analyse syntaxique avant « buffer »



aucun 'buffer' ligne 1

test.c:1:36: caractère ' de terminaison manquant
test.c:1:36: AVERTISSEMENT: constante caractère trop longue
test.c:2: erreur d'analyse syntaxique avant « you »



aucun 'you' ligne 2

test.c:2: erreur d'analyse syntaxique avant « that »



aucun 'that' ligne 2

etc...

Marc Boyer


C'est axactement ce que je ne comprends pas:
le texte est : ( copie/colle)

gil]$ cat test.c
;; This buffer is for notes you don't want to save, and for Lisp
evaluation.
;; If you want to create a file, visit that file with C-x C-f,
;; then enter the text in that file's own buffe
void main()
{
int a = 17 , b = 36;
printf("%dn", a * b );
}


<HS>
Comme te le signale le message d'aide d'emacs, pour créer un nouveau
fichier, c'est ctl+x ctrl+f <nom-du-fichier>

j'ai qques notions en C et c'est pourquoi je ne comprends pas.


Là, ce n'est pas un problème de C, c'est un problème d'anglais !-)

Pour info, les 3 premières lignes de ton fichier sont des commentaires
en lisp. Tu aurais pu penser à les enlever (ou mieux, à suivre le
conseil qu'elle te donne...).
</HS>

Je pense + vers un Pb de version de compilateur avec ma version de RH9.


Hem.... Qui veut noyer son compilo l'accuse de la rage.



Avatar
Bruno Desthuilliers
(snip)

Je vais reprendre mes cours de C et autres ( j'etais sur DPS et NOKR
DADA )et j'essayer de l'appliquer a Linux
Un conseil: Quel environemnt graphique Linux vous cconseillez.


emacs, avec ECB - et après avoir lu la doc !-)

Avatar
Bruno Desthuilliers
On Tue, 25 Oct 2005 19:29:38 +0200, Albert wrote:

J'avoue avoir beaucoup (trop) oublie le C



Oublier le C, ça va encore. Mais l'anglais, ça va pas du tout aller.
Tu veux pas remettre ton compilateur en anglais?
Ca t'aiderai beaucoup!

Pas gentil, ça de taper sur les débutants !-)



Avatar
Marc Boyer
Le 25-10-2005, Albert a écrit :
En C, les commentaires sont /* */ ou //, mais pas ;;.

D'ailleurs, emacs est gentil, il te le dit:
'This buffer is for notes you don't want to save, and for Lisp
evaluation'

l'anglais et moi ..



Ben, programmer sans savoir lire un minimum d'anglais,
c'est partir avec un sérieux handicap.

Enlève ces 3 lignes, ajoute un
#include <stdio.h>
et ça devrait mieux se passer.

Pas besoin



Que signifie "pas besoin" ?
En effet, sans ce #include, votre programme doit
compiler et s'exécuter correctement sur votre machine.
Mais dans un contexte plus général (autre programme,
autre compilateur, autre machine), cela pourrait
donner un bug.

Voilà, quand on est débutant, c'est une bonne habitude
à prendre que d'ajouter #include <stdio.h> quand
on utilise printf.

Marc Boyer
--
À vélo, prendre une rue à contre-sens est moins dangereux
que prendre un boulevard dans le sens légal. À qui la faute ?


1 2 3 4 5