先决条件: C语言中的文件处理
给定一个包含一些文本的文件,以及两个字符串wordToBeFind和wordToBeReplacedWith ,任务是查找文件中给定单词’wordToBeFind’的所有出现并将其替换为给定单词’wordToBeReplacedWith’。
例子:
Input : File = "xxforxx xx for xx",
wordToBeFind = "xx",
wordToBeReplacedWith = "geeks"
Output : geeksforgeeks geeks for geeks
方法:这里的想法是从给定文件中读取内容,进行查找和替换,然后将输出存储在另一个文件中。
- 制作FILE的目标文件(ifp和ofp)
- 打开两个文件,一个在读取模式下用于文件输入,另一个在写入+模式下用于文件输入
- 检查文件是否正确打开
- 逐字读取存在的输入文件的内容
- 由于使用fgets需输入新行字符(即Enter键),因此我们只需将字符串的空字符复制回一个位置,以便将换行符替换为“ \ 0”
- 我们循环运行直到到达文件末尾,然后扫描文件中的每个单词并将其存储在变量“ read”中。
- 然后,将“ read”与“ wordToBeFind”进行比较,如果结果为真,则使用“ strcpy()”将“ read”替换为“ wordToBeReplacedWith”。
- 通过printf显示单词替换
- 现在我们再次将文件指针移到文件的开头,并打印输出文件的文件内容。
下面是上述方法的实现:
// C program to find and replace a word
// in a File by another given word
#include
#include
#include
// Function to find and
// replace a word in File
void findAndReplaceInFile()
{
FILE *ifp, *ofp;
char word[100], ch, read[100], replace[100];
int word_len, i, p = 0;
ifp = fopen("file_search_input.txt", "r");
ofp = fopen("file_replace_output.txt", "w+");
if (ifp == NULL || ofp == NULL) {
printf("Can't open file.");
exit(0);
}
puts("THE CONTENTS OF THE FILE ARE SHOWN BELOW :\n");
// displaying file contents
while (1) {
ch = fgetc(ifp);
if (ch == EOF) {
break;
}
printf("%c", ch);
}
puts("\n\nEnter the word to find:");
fgets(word, 100, stdin);
// removes the newline character from the string
word[strlen(word) - 1] = word[strlen(word)];
puts("Enter the word to replace it with :");
fgets(replace, 100, stdin);
// removes the newline character from the string
replace[strlen(replace) - 1] = replace[strlen(replace)];
fprintf(ofp, "%s - %s\n", word, replace);
// comparing word with file
rewind(ifp);
while (!feof(ifp)) {
fscanf(ifp, "%s", read);
if (strcmp(read, word) == 0) {
// for deleting the word
strcpy(read, replace);
}
// In last loop it runs twice
fprintf(ofp, "%s ", read);
}
// Printing the content of the Output file
rewind(ofp);
while (1) {
ch = fgetc(ofp);
if (ch == EOF) {
break;
}
printf("%c", ch);
}
fclose(ifp);
fclose(ofp);
}
// Driver code
void main()
{
findAndReplaceInFile();
}
如何执行以上代码:
- 从此处复制源代码并将其粘贴到离线IDE中
- 保存程序。
- 创建一个名为“ file_search_input.txt ”的文件,并将其保存在保存上述程序的文件夹中。
- 现在打开终端或离线IDE并运行程序
输出:
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。