Как заменить карактер в строке?
Поэтому я хочу заменить символ, который выбирает пользователь, а затем выбрать, какой символ следует использовать вместо него. Это первый раз, когда я делаю что-то подобное, и все это ново для меня, так что если у кого-то есть хорошая идея, как это сделать, я буду благодарен. это длинный код, но то, о чем я говорю, в основном начинается с "if(x == 6)"
Что я уже пробовал:
#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { int x; printf("Pick the program that should be executed:\n"); printf(" 1. Split text\n 2. Upper case to lower case\n 3. Lower case to upper case\n 4. Remove a character\n 5. Add a character\n 6. Replace a character\n 7. Statistics\n 8. Exit\n Enter an option:\n"); scanf("%d", &x); if (x == 1) ///split the text { char str[100]; int i; printf("Write the text that should be used:\n"); getchar(); fgets(str, 100, stdin); printf("Input was: %s\n", str); for (i = 0; str[i] != '\0'; i++) { printf("%c", str[i]); printf("\n"); } } if (x == 2) //upper case to lower case { char str[100]; int i; printf("Write the text that should turn upper cases to lower cases: \n"); getchar(); fgets(str, 100, stdin); printf("Input was: %s\n", str); for (i = 0; str[i] != '\0'; i++) if (str[i] >= 'A' && str[i] <= 'Z') str[i] = str[i] + 32; //A - Z = 65 - 90, a - z = 97 - 122 printf("string converted to lower case: %s", str); getchar(); } if (x == 3) //lower case to upper case { char str[100]; int i; printf("Write the text that should turn lower cases to upper cases\n"); getchar(); fgets(str, 100, stdin); printf("Input was: %s\n", str); for (i = 0; str[i] != '\0'; i++) if (str[i] >= 'a' && str[i] <= 'z') str[i] = str[i] - 32; printf("string converted to upper case: %s\n", str); getchar(); } if (x == 4) { char str[100]; size_t i, j, len; int r; printf("Enter a sentence: \n"); fgets(str, 100, stdin); if (fgets(str, 100, stdin) == NULL) { fprintf(stderr, ("fgets failed")); return -1; } str[strcspn(str, "\n")] = 0; printf("This is the sentence: %s\n", str); printf("Enter character to remove: \n"); r = getchar(); /*If getchar returns EOF, no need to go through character removal logic*/ if (r != EOF) { len = strlen(str); i = 0; while (str[i] != '\0') { if (str[i] == (char)r) { for (j = i; j < len; j++) { str[j] = str[j + 1]; } len--; } else i++; } } printf("Sentence after removal: %s\n", str); } if (x == 5) { char str[100] = ""; size_t len; int r; printf("Enter a sentence: "); fgets(str, 100, stdin); if (fgets(str, 100, stdin) == NULL) { fputs("fgets failed\n", stderr); return 1; } str[(len = strcspn(str, "\n"))] = 0; //save len printf("This is the sentence: '%s' (len: %zu)\n", str, len); if (len < 100 - 1) { printf("\nEnter character to add: "); if ((r = getchar()) != EOF) { str[len++] = r; str[len] = 0; printf("This is the sentence: '%s' (len: %zu)\n", str, len); } else fputs("(user canceled input.)\n", stderr); } else { fputs("error: insufficient space to add char.\n", stderr); return 1; } } system("pause"); return main(); if (x == 6) { char str[100]; size_t len; int r, i, j; struct newlen { char str[50]; }; printf("Write the sentece that should be used\n"); fgets(str, 100, stdin); if (fgets(str, 100, stdin) == NULL) { fputs("fgets failed\n", stderr); return 1; } str[(len = strcspn(str, "\n"))] = 0; printf("Choose the letter that should be replaced:\n"); r = getchar(); if (r != EOF) { len = strlen(str); i = 0; while (str[i] != '\0') { if (str[i] == (char)r) { for (j = i; j < len; j++) { str[j] = str[j + 1]; } newlen = newlen.replace(str[j + 1], r); } else i++; } } printf("Sentence after replacement: %s\n", str); } }