Eingabe einer Zeichenkette mit scanf in c einschließlich whitespaces

8

Beispiel, wenn der Benutzer Folgendes eingibt:

My name is James.

Wenn ich scanf benutze, muss ich die vollständige Zeile drucken, d. h. My name is James. , dann muss ich die Länge dieser eingegebenen Zeichenfolge ermitteln und sie in einer Variablen int speichern.

    
shobhnit 20.02.2011, 00:15
quelle

4 Antworten

16

Versuchen Sie:

%Vor%

Ersetzen Sie 80 durch 1 weniger als die Größe Ihres Arrays. Weitere Informationen finden Sie auf der scanf man-Seite

    
Splat 20.02.2011 00:48
quelle
3

@Splat hat die beste Antwort hier, da dies Hausaufgaben sind und ein Teil Ihrer Aufgabe ist, scanf zu verwenden. % Co_de% ist jedoch viel einfacher zu verwenden und bietet eine feinere Steuerung.

Was Ihre zweite Frage betrifft, erhalten Sie die Länge einer Zeichenkette mit fgets , und Sie speichern sie in einer Variablen vom Typ strlen . Es in size_t zu speichern ist falsch, weil wir keine Zeichenfolgen mit einer Länge von -5 erwarten. Ebenso ist es unangemessen, sie in einem int oder einem anderen unsignierten Typ zu speichern, weil wir nicht genau wissen, wie groß ein ganzzahliger Typ ist und wie viel Platz wir genau brauchen, um die Größe zu speichern. Der Typ unsigned int existiert als ein Typ, der garantiert die richtige Größe für Ihr System hat.

    
Chris Lutz 20.02.2011 02:16
quelle
0
%Vor%     
mr_eclair 20.02.2011 07:41
quelle
-1
%Vor%     
Rohit Kumar 31.08.2014 07:47
quelle

Tags und Links