2016-07-18 16 views
-1

ich diesen Code schrieb:fgets Kopieren nicht Anfangsbuchstaben

  check_name = 0; 
      printf("Enter the Location of the photo:\n"); 
      fgets(location, MAX_LOCATION_SIZE, stdin); 
      printf("Enter the name of the photo:\n"); 
      count = 0; 
      while (check_name == 0) 
      { 
       if (count > 0) 
       { 
        printf("The name is already in the list!\nChoose another one:\n"); // will not do it only for the first time 
       } 
       getchar; 
       fgets(name, MAX_NAME_SIZE, stdin); 
       check_name = checkName(frameList, name); 
       count++; 
      } 

Ich werde erklären, was alles ist jetzt:

Ich habe die check_name weil ich einen Test tue zu überprüfen, ob der Name bereits in eine Liste (Es ist nicht wirklich wichtig für dieses Problem, so werde ich nicht den Code hochladen, wenn Sie es wirklich brauchen)

Ich legte getchar vor der fgets, weil ohne es, es nicht einmal nach dem Namen fragt.

Jedesmal, dass ich etwas zu dem fgets(entering a name) geben Sie seine nicht kopiert meinen ersten Brief (wenn ich seine Spar exter setzen Dexter), und ich habe bereits überprüft, dass ich gab es genug Platz (char name[50] - mein Lehrer gesagt, als dass dies sein der max)

+3

'getchar;' oder 'getchar()' ??? –

+1

Wenn 'getchar;' nicht mindestens eine Warnung ausgelöst hat, müssen Sie Ihre Warnstufen auf den Compilerschaltern aufdrehen. Sie sollten etwas mit dem Effekt "Ausdrucksergebnis unbenutzt" oder ähnliches erhalten haben. – WhozCraig

+0

Bitte senden Sie vollständige kompilierbare Beispiele, die Sie bereits lokal ausgeführt und getestet haben, um das genaue Problem zu zeigen .... oder wir können Monate damit verbringen, herauszufinden, worüber Sie sprechen (und außerdem wissen Sie nicht, wo Fehler ist, also ist es schwierig, es zu übertragen, wenn Sie nicht den genauen Code posten, den Sie geschrieben haben **) –

Antwort

1

getchar() erhält ein Zeichen und der Rest des Zeichens steht für fgets() zur Verfügung. entferne das also. Wenn Ihr Problem mit dem ersten Verlust eines Zeichens auftritt ... setzen Sie getchar() vor die Schleife. oder sogar du kannst schreiben scanf("%*c");

+0

'getchar;' ist ein Ausdruck mit einem unbenutzten Ergebnis, kein Funktionsaufruf. – evaitl

+0

ja. Im gegebenen Codesegment ist es ein Ausdruck. aber die Frage sagt, dass er getchar benutzt. Ich habe "getchar" vor die "fgets" gestellt, weil ohne sie es nicht einmal nach dem Namen fragt. Machen Sie die Aufforderung, zu erscheinen, und sie nimmt ein Zeichen. Ein Ausdruck kann es nicht passieren lassen, so dass es ein Anruf sein muss. Wenn es ein Anruf ist, dann entsteht dieses Problem. –

+0

'getchar;' wird meistens einen Kompilierungsfehler über einen nicht definierten Bezeichner geben (oder einen ungültigen Objekttyp, falls Sie die richtige Headerdatei eingefügt haben und der Compiler einen Prototyp dafür hat). Bitte senden Sie vollständige kompilierbare Codebeispiele und weigern sich, Code-Snippets zu senden. Snippets spiegeln nur Ihre Vorstellung von dem wider, was passiert, und nicht, was ** tatsächlich ** passiert (und natürlich, in Ihrer Idee ist der Fehler wahrscheinlich nicht enthalten, es ist kein Konzeptmissverständnis) –