2016-11-10 4 views
0

Lassen dieses Beispiel sehen:Sets Char * in C von Char Trim

char var1[100] = "test "; 
char* var2; 

Wenn ich dies tun:

var2 = &var1; 

ich es mit Leerzeichen bekommen.

Ich möchte var2 die Trimmung von var1 sein.

+0

haben sie versucht, etwas? Ich schlage 'strchr (var1, '')' als einen guten Startpunkt vor. – pm100

+0

'char var1 =" test ";' ist keine gültige Initialisierung. Sie versuchen, eine Adresse (in der Regel 4 oder 8 Byte) Wert in eine Variable Zeichen (in der Regel 1 Byte) zuzuweisen. –

+0

Schlechte Initialisierung rechts. Korrigiert. – Richasantos

Antwort

0

Soweit ich weiß, gibt es keine Möglichkeit, dies zu tun, ohne die ursprüngliche Zeichenfolge zu ändern oder eine modifizierte Version dieser Zeichenfolge in eine neue Quelle zu kopieren. Wie pm100 sagte, können Sie den Zeiger finden, der auf die erste Instanz des Speicherplatzes in dieser Zeichenfolge zeigt, und dann den Abstand von Ihrem Quellzeiger und diesem Zeiger ermitteln, um den Index des Leerraums zu finden. Verwenden Sie danach einfach strncpy, um diesen Teil der Zeichenfolge in einen neuen Zeiger zu kopieren. Stellen Sie sicher, dass Sie Ihren neuen Zeiger und das abschließende Zeichen '\ 0' am Ende setzen.

Die andere Lösung ist einfach zu verwenden strchr wieder wie pm100 sagte, aber dieses Mal ändern, was dieser Zeiger auf '\ 0' zeigt.

0

ein Quicky

var2 = strdup(var1); 
char * idx = strchr(var2, ' '); 
if(idx) *idx = 0;