найти вхождения строки в текстовом файле и заменить эти вхождения на другую строку, указанную пользователем - PullRequest
0 голосов
/ 28 февраля 2020

Цель моей программы - прочитать текстовый файл, а затем найти / отсканировать файл, чтобы увидеть, находится ли ввод от пользователя внутри файла. Например, если пользователь пишет «в», а текст внутри файла - «Приходите к нам домой», то «в» должен быть выводом. найти общее слово и вывести его. В настоящее время я пытаюсь найти способ сравнить вводимые пользователем данные с содержимым файла. Мне трудно понять C, я новичок, как вы можете видеть.

int main() {

FILE* myFile = fopen("C:\\Users\\Vasileios\\Desktop\\txtfiles\\words.txt", "r+");
FILE* myFile1 = fopen("C:\\Users\\Vasileios\\Desktop\\txtfiles\\sentences.txt", "r+");
FILE* tempFile = fopen("C:\\Users\\Vasileios\\Desktop\\txtfiles\\sentences_temp.txt", "w");
char word[MAX];
char lineBuffer[MAX];
char string[MAX], replace[MAX];
char temp[] = "temp.txt", * ptr1, * ptr2;
if (myFile == NULL)
    {
        printf("File Does Not Exist \n");
        return 1;
    }

    while (!feof(myFile))
    {
        char lineBuffer[1024];
        fscanf(myFile, "%1024[^\n]\n", lineBuffer);
            printf("%s\n", lineBuffer);

: Я хочу также напечатать слово, введенное пользователем, если оно найдено внутри файла, я попытался сделать это, сохранив содержимое файла внутри переменной, а затем сравнив его с вход, но я запутался.

printf("Enter the word to be replaced:");
            fgets(word,  stdin);
            scanf(myFile ,"%s", word);

        printf("Enter your replace word:");
        fgets(replace ,stdin)
        scanf("%s", replace);
        FILE* myFile = fopen("C:\\Users\\Vasileios\\Desktop\\txtfiles\\words_test.txt", "r+");

        if (!myFile) {
            printf("File does not exist!!\n");
            return 0;
        tempFile = fopen("temp.txt", "w");
        if (!tempFile) {
            printf("Unable to open temporary file!!\n");
            return 0;
        }
        while (!feof(myFile)) {
            strcpy(string, "\0");
            fgets(string, MAX, myFile);
            if (strstr(string, word)) {
                ptr2 = string;
                while (ptr1 = strstr(ptr2, word)) {
                    while (ptr2 != ptr1) {
                        fputc(*ptr2, tempFile);
                        ptr2++;
                    }
                    ptr1 = ptr1 + strlen(word);
                    fprintf(tempFile, "%s", replace);
                    ptr2 = ptr1;
                }
                while (*ptr2 != '\0') {
                    fputc(*ptr2, tempFile);
                    ptr2++;
                }
            }
        }



        fclose(myFile);
        fclose(tempFile);
        return 0;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...