Estoy aprendiendo cadenas en c, y estoy trabajando en mi tarea que me pide que escriba un programa para reemplazar parte de la cadena en ciertas circunstancias. Aquí está mi código fuente (deshacer):
#include <stdio.h> #include <string.h> int main() { char str1[128], str2[128], str3[128]; for (int i = 0; i < 128; i++) //initialize str { str1[i] = 0; str2[i] = 0; str3[i] = 0; } printf("Input the first string:"); //inputs fgets(str1, 128, stdin); printf("Input the second string:"); fgets(str2, 128, stdin); printf("Input the third string:"); fgets(str3, 128, stdin); if (strncmp(str1, str2, strlen(str2) - 1) == 0) //if the first n charters match (n=length of str2) { printf("%s", str3); //print str3 int RemainingChar = 0; RemainingChar = strlen(str1) - strlen(str2); for (int i = 0; i < RemainingChar; i++) { printf("%c", str1[i + strlen(str2) - 1]); //print the remaining part } } return 0; }Así es como funciona:
Input the first string:asdfghjkl Input the second string:asd Input the third string:qwe qwe fghjkl Hay un salto de línea inesperado. ¿Qué debo hacer para que salga así: qwefghjkl ?
La función fgets también almacenará el carácter de nueva línea '\n' al final de la línea en la cadena. Si no desea que se imprima este carácter de nueva línea, debe eliminarlo antes de imprimir la cadena.
Consulte la siguiente pregunta para conocer varias formas de eliminar el carácter de nueva línea:
Eliminar el carácter de nueva línea final de la entrada fgets ()