Eliminación de un salto de línea en el medio de una cadena utilizando getchar.
En este momento tengo un string que se ve así:
none
A sentence<br>
with a newline.
Estoy leyendo el string a través de la entrada de la consola de la siguiente manera:
ch = getchar();
while (ch != '.') {
msg[i] = ch;
i++;
ch = getchar();
}
Y, después de leerlo, remuevo los espacios en blanco presentes haciendo esto en una función y aplicándolo al array de caracteres msg
:
char *remove<em>white</em>spaces(char *str) {
int i = 0, j = 0;
while (str[i]) {
if (str[i] != ' ')
str[j++] = str[i];
i++;
}
str[j] = '\0';
return str;
}
He intentado iterar sobre él y detenerme en \n
pero eso deja una salida de “Asentence”, ya que el string termina cuando se establece \n
a 0.
Código completo:
int main(void) {
char msg[MAX_MSG_LEN+1];
char ch;
int i = 0;
ch = getchar();
while (ch != '.') {
msg[i] = ch;
i++;
ch = getchar();
}
msg[i] = '.';
msg[i + 1] = '\0';
remove<em>white</em>spaces(msg);
printf("%s\n", msg);
return 0;
}
davy.ai
Pregunta
Respuesta
El problema con la salida del código después de eliminar los espacios en blanco de la cadena de entrada es que la función solo elimina los espacios y no las nuevas líneas. Por lo tanto, la salida será “UnaOración\nConUnaNuevaLínea.” en lugar de “UnaOraciónConUnaNuevaLínea.”