Gibt es eine andere Möglichkeit, eine Zeichenfolge abzuschneiden?

8
%Vor%

Ist das der beste Weg, dies zu tun?

Wie bewahre ich auch, dass ogSize nicht mehr als 30 Zeichen lang ist, da es von Benutzereingaben kommt?

Danke.

    
T.T.T. 31.08.2010, 23:19
quelle

6 Antworten

17

Bei einer Zeichenfolge im C-Stil können Sie einfach das Zeichen, das Sie abschneiden möchten, auf %code% setzen.

In Bezug auf Ihre zweite Frage, überprüfen Sie im Grunde. Oder Sie reservieren basierend auf der String-Größe so viel Speicher wie Sie benötigen (denken Sie daran, Platz für diesen %code% aufzunehmen).

    
jkerian 31.08.2010, 23:32
quelle
2

Sieh dir das an:

%Vor%     
BillP3rd 31.08.2010 23:38
quelle
2

Wenn Sie Ihre letzte Frage an erster Stelle stellen, ist das Sicherstellen einer maximalen Größe ziemlich einfach. Normalerweise möchten Sie fgets verwenden, um die Zeichenfolge zu lesen. Dadurch können Sie eine maximale Länge angeben. Alternativ können Sie eine maximale Größe in einem Scanf-Format angeben (z. B. "%29s" oder "%29[^\n]" ). Beachten Sie den Unterschied zwischen den beiden Werten: Mit fgets geben Sie die Puffergröße an, mit scanf geben Sie jedoch eine Zahl kleiner als die Puffergröße an (d. H. Die maximale Anzahl der zu lesenden Zeichen).

Was die erste Frage angeht: Ja, es gibt generell bessere Wege. strncpy ist eine seltsame Funktion, die ursprünglich für einen ziemlich speziellen Zweck geschrieben wurde und (um ehrlich zu sein) sollte wahrscheinlich aus der Standardbibliothek entfernt werden, denn während es scheint wie es nützlich sein sollte, ist es fast ist es nie wirklich.

Ich würde wahrscheinlich die Dinge ein wenig anders machen. Eine Möglichkeit wäre, snprintf , etwa wie folgt zu verwenden:

%Vor%     
Jerry Coffin 31.08.2010 23:40
quelle
2

Verwenden Sie fgets (), um die Zeichenfolge vom Benutzer zu lesen, auf diese Weise können Sie eine maximale Länge der Zeichenfolge angeben

%Vor%     
Anders K. 31.08.2010 23:43
quelle
1

Sie können eine Null in die Zeichenfolge einfügen, um sie zu verkürzen. Unterhalb der Funktion strstr () wird die Adresse des ersten Auftretens von ".log" gesucht. Danach können Sie die zwei Adressen voneinander subtrahieren, um die Länge des Namens herauszufinden und wo die Null eingefügt werden soll.

%Vor%     
skimobear 01.09.2010 04:00
quelle
1
%Vor%

oder

%Vor%     
user411313 01.09.2010 10:31
quelle

Tags und Links