es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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;
}
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Pregunta

    1. ¿Cuál es el problema con la salida del código después de eliminar los espacios en blanco de la cadena de entrada?

    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.”

Comments are closed.