Есть несколько критических замечаний по поводу определения вашей функции, но в рамках условий постановки задачи ваша функция даст правильный ответ. Технически это не так.
Я предполагаю, что проблема не была эффективно передана, или критика интервьюера не была передана. Может быть, разъяснение было частью теста, а?
Вот краткое изложение возможных жалоб ...
... потому что он вернется, если все равны нулю, но вы, вероятно, хотите вернуть, если любой равен нулю Это не может привести к сбою, поскольку в заявлении о проблеме говорится, что ни один из них не может быть нулевым.
- Та же самая строка, упомянутая выше, молча завершается неудачей. Было бы лучше вернуть код ошибки, сгенерировать исключение или подтвердить. Тихий сбой - это плохая практика, но технически он корректен, потому что функция не может дать сбой, учитывая суть проблемы.
- s1 и s2 могут иметь тип const char * для лучшей читабельности и эффективности (const помогает оптимизировать некоторые компиляторы).
- Изменение переменных параметров часто считается плохим
практика. Другое дело
читаемость.
- Вы можете использовать существующие функции
strcpy и strcat. Другое дело
удобочитаемости и эффективности.
Хороший программист должен стремиться не только к технической корректности, но и к удобочитаемости, эффективности и надежной обработке ошибок, но в основном это субъективно и ситуативно. В любом случае, не обращая внимания на ошибку в вашем первом операторе if, я думаю, что ваша функция читается достаточно хорошо и выполняет свою работу. :)