2015-06-09 3 views
2

Я хочу вызвать метод, который добавляет пробел в string.Параметры параметра String

Таким образом, потому что я изменяю длину string, я предполагаю, что я не могу сделать что-то вроде addSpace("hello world");, вместо этого я должен определить его как char word[100] = "hello world", а затем addSpace(word). Но у меня так много случаев, что это займет много места, так есть ли другой способ просто предложить предложение в параметре string, даже когда мне нужно его изменить?

+1

Можете ли вы привести пример? я боюсь, что точный ответ будет зависеть от того, откуда берутся эти строки – Dleep

ответ

2

Если вы вызываете такую ​​функцию: addSpace("hello world"); Изменение параметра внутри функции - неопределенное поведение. Вместо этого вы можете сделать копию параметра и возврата, что:

char* addSpace(const char* str) { 
    char* copy = malloc(strlen(str) + 2); // +1 for space, +1 for null terminator 
    if (copy != 0) { 
     // code to copy str to copy and add space 
    } 
    return copy; 
} 

Только не забудьте free возвращаемый указатель впоследствии, и ошибка проверки возвращаемого значения.

Смежные вопросы