ibilalkayy Ответов: 1

Если слово было найдено, то как заменить его в другом файле?


#include <string.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    
    void firstWord(char str[]){
        int i = 0;
        while(!isspace(str[i])){
          i++;
        }
        str[i]='\0';
    }
    
    void hello(){
    	int option;
    	char updated_name[50], read[100];
    	short int FLAG = 0;
    	
    	static const char * listing[] = {"Name", "Date of birth","ID card number","Phone number"};
    	
      	FILE * fr3 = fopen("file.txt","r");
      	FILE * fw1 = fopen("new.txt","w");
      	
    	if (fr3 == NULL || fw1 == NULL) {
    	    perror("Unable to read text file.");
    	    exit(0);
    	}
    
        for (option = 1; option <= sizeof(listing)/sizeof(char *); ++option)
    	   printf("%d. Your %s\n", option, listing[option-1]); 

<big>SELECT OPTION TO UPDATE</big>
    
    	fputs("Select your choice to update: ", stdout);
    	scanf("%d", &option);
    
    	char string[100];
    	if (option == 1){
    		while(fgets(string, 100, fr3) != NULL){
    			firstWord(string);
    			printf("'%s' found. Now replace it with another name: ", string);
    			scanf("%s", &updated_name);
    
    			fclose(fr3);
    		 	exit(0);
    		}
    	}
    	fclose(fw1);
    }
    int main(){
      hello();
    }


Что я уже пробовал:

У меня есть этот код, который я разделил на две части просто для понимания цели. Первый вариант работает нормально и показывает мне детали для обновления.

У меня есть проблема со второй частью, в которой код правильно берет имя/слово из файла, но я не знаю, как заменить его новым именем/словом в другом файле? Не могли бы вы помочь мне с некоторым кодом, потому что я много искал? Спасибо!

Здесь file.txt
билалхан 20/20/1980 908732343

1 Ответов

Рейтинг:
10

Rick York

Способ, которым я имею дело с заменой текста, заключается в том, что я открываю временный файл для записи. Я открываю входной файл и постоянно читаю из него во внутренний буфер и заменяю данные по мере необходимости, а затем записываю результат во временный файл. Когда входные данные будут полностью прочитаны, закройте оба файла. Следующие шаги заключаются в том, чтобы скопировать временный файл во входной файл, а затем удалить временный файл. Вы можете использовать fgets для чтения текста в том виде, в каком вы уже есть. Вам просто нужно открыть временный файл и записать в него.

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


CPallini

5.