Entfernen Sie die Ersten beiden Zeichen aus einem Char-array
Ich habe Probleme mit dem entfernen der ersten beiden Buchstaben von meinem char-array.
input[MAXSIZE] = "./hello";
for(int i = 2; i < MAXSIZE; i+=2)
{
strcpy(input[i-2],input[i]);
}
und ich erhalte den folgenden Fehler:
invalid conversion from ‘char’ to ‘char*’
initializing argument 1 of ‘char* strcpy(char*, const char*)’
invalid conversion from ‘char’ to ‘const char*’
initializing argument 2 of ‘char* strcpy(char*, const char*)’
Ich weiß, dass dies ist ein sehr einfaches problem, aber ich bin ziemlich neu in diesem.
Auch wenn es eine einfachere Möglichkeit gibt dieses problem zu umgehen, fühlen Sie sich frei, mich zu erziehen.
- Gibt es einen Grund Sie nicht mit
std::string
? - Sie können auch einfach mit einem Zeiger auf das Dritte Zeichen (char* modified_input= &input[2]) als eine neue "array" ohne das verschieben oder kopieren von Zeichen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
strcpy
Kopien null-terminierte char arrays, nicht in Zeichen.Was Sie wollen, ist:
Auch, warum nicht erhöhen Sie
i
mit1
aber mit2
?Wie schon andere gesagt haben,
strcpy
ist nicht gedacht, um verwendet werden, und Sie können die gewünschte Wirkung erzielen, mitAber Sie können auch einfach verwenden,
memmove
:Wenn
input
wird garantiert, um ein array vonchar
Sie können auch entfernen Sie die/sizeof(input[0])
Teil.Und natürlich noch besser wäre es die standard-Bibliothek verwenden
std::copy_backward
(erforderlich, da die Quell-und Ziel-Bereiche überschneiden sich):Als eine alternative Lösung können Sie einfach verwenden einen Zeiger auf char zu "überspringen" die ersten beiden Zeichen im array:
strcpy
verwendet werden auf char-array nicht in Zeichen!!Sehen auch in diesem Que c entfernen Sie das erste Zeichen in einem array