2017-02-05 4 views
1

So bin ich ziemlich neu zu while-Schleifen und bin hier fest. Könnte mir jemand dabei helfen oder mir in die richtige Richtung zeigen? Es ist Teil eines größeren Programms, das ich erstellen möchte. Danke für jede Hilfe!Was mache ich hier falsch? Während Schleife und Zeichenprobleme

Es soll weiter gefragt werden, bis "q" eingegeben wird.

Code:

#include <stdio.h> 
int main(void) 
{ 
    int height, feet, inches; 
    char name[30]; 
    while (name!='q') 
    { 
     printf("Enter height and first name: "); 
     scanf("%d %s", &height, &name); 
     inches = height%12; 
     feet = height/12; 
     printf("%s's height is %d feet and %d inches.\n", name, feet, inches); 
    } 
    return 0; 
} 

ich dann bemerkt, wenn ich geben Sie die Schleife zu beenden, das Programm verrückt wird und startet den Druck der ersten Zeile des unendlich Schleife.

+0

Sie brauchen überhaupt keine Schleife ... – Dai

+0

Sie fragte nach Höhe und dann nach Name, und erwarten Sie Höhe, dann Name, noch Sie Namen Höhe eingegeben. Außerdem, wie Dai sagte, brauchst du keine While-Schleife. – Jerinaw

+0

Hier ist keine Schleife erforderlich. Es sind zwei Zeilen Code, um Zoll in Fuß und Zoll zu konvertieren, ohne dass eine Schleife erforderlich ist. –

Antwort

1

ersetzen while (name!='q') mit while(name[0]!='q')

Es wird gut funktionieren.

+0

Aus irgendeinem Grund bin ich etwas verwirrt, was die Verwendung von Klammern mit einer Zahl bei der Definition von Zeichenvariablen tatsächlich tut. Wenn ich die Nummer ändere, scheint es keinen Unterschied für mich zu machen. Zum Beispiel dachte ich, wenn ich "char c [5]" benutzte, um c zu definieren, und dann scanf benutzte, um eine Zeichenkette für c einzugeben, würde 5 das, was ich eingegeben habe, auf nur 5 Zeichen begrenzen. Aber das scheint nicht der Fall zu sein. Oder vielleicht bin ich schrecklich falsch. Wie auch immer, ich schweife ab. Ich habe das Programm herausgefunden und es funktioniert. Danke für Ihre Hilfe! –

+0

Nun, Sie sind willkommen. Wenn mein Vorschlag geholfen hat, sei nett genug, um es zu verbessern. – Pbd

2
while (name!='q'); 

Sie können nicht Strings wie dies in C. Sie müssen vergleichen strcmp verwenden, zum Beispiel while (strcmp(name, "q")).

Welches Buch liest du? Dies wird oft in anständigen Büchern schon früh betont.

+0

Vielen Dank für Ihre Hilfe! Ihnen und allen! Ich habe es letzte Nacht richtig gut laufen lassen, nicht lange nach deinen hilfreichen Tipps. –

+0

Sie können sich nicht auf die Tipps von Menschen im Internet verlassen, da nicht alle von uns im Bereich des Lehrens und Programmierens seriös sind. – Sebivor

+0

Ob jemand ist oder nicht, einige Hilfe ist besser als keine. Ich möchte Kenntnisse in der Programmierung in C und anderen Sprachen erlangen, damit ich schließlich seriös genug bin, um die Fragen anderer zu beantworten, anstatt sie immer zu fragen. –