4 Stimmen

Strcpy String-Array

char kopieren, array[20]

    printf("eingeben ..."):
    scanf("%s", array);

    if (strlen(array) > 20 ) 
      { 
       strcpy(kopieren, array...); 

Was müsste ich tun, um nur die ersten 20 Zeichen zu erfassen, wenn die Eingabe länger als 20 Zeichen ist?

1 Stimmen

Was soll das bedeuten? copy ist überhaupt kein Array. array ist 20 Zeichen lang. array kann einfach nicht länger als 20 Zeichen sein.

0 Stimmen

Du bekommst Overflow mit scanf, wenn du mehr als 20 Bytes eingibst. Schau dir fgets an.

0 Stimmen

@James strncpy beendet das Ergebnis nicht unbedingt mit einem NUL -- fast nie das, was man möchte (der ursprüngliche Zweck war das Kopieren von UNIX-Verzeichniseinträgen, die 14 Bytes lang waren und mit einem NUL abgeschlossen wurden, wenn sie kürzer waren). In jedem Fall ist es hier nicht anwendbar.

0voto

DVK Punkte 123218
 strncpy (copy, array, 20);

macht den Trick. Der String würde jedoch NICHT mit Null beendet werden, wenn er >20 Zeichen lang wäre!

http://www.cplusplus.com/reference/clibrary/cstring/strncpy/

0voto

Hellion Punkte 1710

Sie müssen Ihren scanf()-Aufruf ändern, nicht Ihren strcpy()-Aufruf:

char kopie[20], array[20];
printf("eingeben....");
scanf(%20s",array); // maximal 20 Zeichen lesen
strcpy(kopie, array);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X