Этот код выглядит хорошо, по крайней мере, на первый взгляд.Одна возможность, если вы передаете строку, которая не оканчивается нулем, или строку, которая не может быть изменена (например, строковый литерал).что-то вроде:
char *chomp (char *str) {
char *from = str; // This is the pointer for reading.
char *to = str; // This is the pointer for writing.
while (*from != '\0') { // Until end of string.
if((*from != '\n') && (*from != '\r')) // Transfer desired characters only.
*to++ = *from; // Only increase write pointer if transferred.
from++; // Increase read pointer no matter what.
*to = '\0'; // Truncate string if necessary.
return str; // And return the in-situ modified string.
}
Это не поможет вам с ненулевыми завершенными строками или строковыми литералами, но это немного короче и больше похоже на C.