Bei einer Zeichenfolge im C-Stil können Sie einfach das Zeichen, das Sie abschneiden möchten, auf
setzen. %code%
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).
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:
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%