2012-01-27 1 views
-4
#include<stdio.h> 

int main() 

{ 

    int c, nl; 

    nl = 0; 

    while ((c = getchar()) ! = EOF){ 
    if (c =='\n'){ 
     nl++; 
    } 
    printf("%d\n", nl); 
    } 

} 

Lorsque j'ai essayé de compiler en utilisant gcc -o fun2 countline.c je reçois cette erreurErreur lors de la compilation

countline.c: In function 'main': 
countline.c:12:26: error: expected ')' before '!' token 

Ce qui est à l'origine de cette erreur? Qu'est-ce que je rate? Je ne peux pas comprendre.

+0

Vous voulez probablement le 'printf' en dehors de la boucle trop :) – pmg

+0

Cela implique votre paresse dans la saisie. – Lion

Répondre

7

L'opérateur d'inégalité est !=, et non ! =. Cet espace fait que le compilateur interprète ! et = comme deux opérateurs distincts (négation logique et affectation), ce qui n'a pas de sens dans ce contexte.

+0

m'a battu de quelques secondes +1. – JonH

+0

me battre aussi :) +1 – 0605002

2

Problème d'espacement simple, vous avez besoin != pas ! = alors s'il vous plaît résoudre ce problème.

Votre code devient:

#include<stdio.h> 

int main() 
{ 
    int c, nl; 
    nl = 0; 

    while ((c = getchar()) != EOF){ 
    if (c =='\n') 
     nl++; 
    printf("%d\n", nl); 
    } 
} 

J'ai nettoyé l'espacement un peu trop.

2

Vous avez écrit ! =. Cela devrait être !=. Vous ne pouvez pas mettre un espace entre les caractères d'un opérateur!

0

Non: (c = getchar()) ! = EOF, utilisez (c = getchar()) != EOF. Le != est un opérateur unique!

Questions connexes