2010-03-21 4 views
1

J'essaie d'obtenir plus d'adepte et ma programmation en C et j'essayais de tester l'affichage d'un caractère du flux d'entrée à l'intérieur de la boucle qui obtient le caractère. J'utilise la méthode getchar.Pourquoi cette exception est-elle levée dans le compilateur C de Visual Studio?

Je reçois une exception levée au moment où l'instruction printf dans mon code est présente. (Si je commente la ligne printf dans cette fonction, l'exception n'est pas levée).

Exception: exception non gérée à 0x611c91ad (msvcr90d.dll) dans firstOS.exe: 0xC0000005: Accès violation lecture emplacement 0x00002573.

Voici le code ... Des pensées? Je vous remercie.

PS. J'utilise la bibliothèque stdio.h.

/*getCommandPromptNew - obtains a string command prompt.*/ 
void getCommandPromptNew(char s[], int lim){  

    int i, c; 

    for(i=0; i < lim-1 && (c=getchar())!=EOF && c!='\n'; ++i){ 
     s[i] = c; 
     printf('%s', c); 
    } 

}

Répondre

4

Essayez de changer:

printf('%s', c); 

à

printf("%c", c); 

Si vous souhaitez imprimer l'intégralité de la chaîne au fin de la boucle dont vous avez besoin pour le terminer avec un NULL char comme:

s[i] = 0; 

et vous pouvez l'imprimer comme:

printf("%s", s); 
+0

merci! Fonctionne très bien. –

1

La première chose que vous devriez vérifier est: êtes-vous la mémoire allouée pour s [] ou non.
Deuxième: printf ("% c", c); // Je peux supposer que% s - attend une chaîne terminée par un caractère nul.
Troisième: problème avec "" vs "dans printf().

+0

Merci de votre contribution également. –

Questions connexes