Давайте посмотрим следующий пример:Set Char * Обрезать полукокса в C
char var1[100] = "test ";
char* var2;
Если я это сделать:
var2 = &var1;
Я достану с пробелами.
Я хочу, чтобы var2 был отделки var1.
Давайте посмотрим следующий пример:Set Char * Обрезать полукокса в C
char var1[100] = "test ";
char* var2;
Если я это сделать:
var2 = &var1;
Я достану с пробелами.
Я хочу, чтобы var2 был отделки var1.
Насколько я знаю, нет никакого способа сделать это, не изменяя исходную строку или не копируя измененную версию этой строки в новый источник.
Как было указано в сообщении pm100, вы можете найти указатель, указывающий на первый экземпляр пространства в этой строке, затем получить расстояние от указателя источника и указатель, чтобы найти индекс пробела. После этого просто используйте strncpy
, чтобы скопировать эту часть строки в новый указатель. Удостоверьтесь, что вы назначили новый указатель и положить завершающий символ '\ 0' в конце.
Другое решение - просто использовать strchr снова, как сказал pm100, но на этот раз измените то, что указывает этот указатель на '\ 0'.
Quicky
var2 = strdup(var1);
char * idx = strchr(var2, ' ');
if(idx) *idx = 0;
вы пытались что-нибудь? Я предлагаю 'strchr (var1, '')' как хорошее место для запуска – pm100
'char var1 =" test ";' не является допустимой инициализацией. Вы пытаетесь назначить значение адреса (обычно 4 или 8 байтов) в переменную символа (обычно 1 байт). –
Плохая инициализация справа. Исправленный. – Richasantos