У меня есть строка с некоторыми пробелами на конце. Я хотел бы завершить эту строку в позиции, когда происходит первое пространство, так что, когда я позже сделаю strncpy()
, он будет копировать только часть строки, которая не содержит пробелов.Null-завершение строки в C
Это какая-то попытка, которая дает мне segault. Как я могу делать то, что я намерен делать?
int main() {
char* s1 = "SomeString ";
*(s1 + 10)='\0';
printf("%s\n",s1);
return 0;
}
'puts (strncpy (s2, s1,10));' будет служить цели здесь. –
Segfault объясняется тем, что 's1' указывает на строку, выделенную в сегменте памяти только для чтения. Попытка записи в этот сегмент вызывает нарушение доступа к памяти. При этом вы можете использовать 'strtok' для своей цели (опять же, если ваша строка выделена в сегменте записи в записываемой памяти). –
@naltipar: Я не голосующий, но я бы избавился от этого «50». Кроме того, одной из веских причин для проголосовавшего может быть тот факт, что вы показали очень «жестко закодированный» пример того, как вы обрезаете эту строку в индексе '10'. –