用C语言完成:【问题描述】 编写程序,在一个指定文件中查找某一字符串,将查找到的字符串用双引号括起来进行标记。要求:(1)字符串查找时,大小写无关。 (2)要查找的字符串若有多个,均要被标记。 【输入形式】 给定文件名为filein.txt。从控制台输入待查找的字符串(不含空格,长度不超过20)。 【输出形式】 将标记后的文件内容输出到文件fileout.txt中。 【样例输入】 从控制台输入待查找字符串: in 文件filein.txt的内容为: #include <stdio.h> void main() { FILE * IN; if((IN=fopen("in.txt","r"))==NULL) { printf("Can’t open in.txt!"); return; } fclose(IN); } 【样例输出】 文件fileout.txt的内容应为: #"in"clude <stdio.h> void ma"in"() { FILE * "IN"; if(("IN"=fopen(""in".txt","r"))==NULL) { pr"in"tf("Can't open "in".txt!"); return; } fclose("IN"); } 【样例说明】 输入的待查找字符串为in,即将文件filein.txt中的所有in字符串(包括iN、In、IN字符串)用双引号括起来,并输出保存到文件fileout.txt中。
时间: 2024-04-10 17:27:06 浏览: 177
基于net的超市管理系统源代码(完整前后端+sqlserver+说明文档+LW).zip
以下是用C语言编写的程序,实现在指定文件中查找字符串并标记的功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAX_LENGTH 20
void convertToLowercase(char *str) {
int len = strlen(str);
for (int i = 0; i < len; i++) {
str[i] = tolower(str[i]);
}
}
void markString(FILE *fileIn, FILE *fileOut, char *searchStr) {
char line[1000];
while (fgets(line, sizeof(line), fileIn)) {
char *ptr = line;
char *found;
while ((found = strstr(ptr, searchStr)) != NULL) {
int startPos = found - line;
int endPos = startPos + strlen(searchStr);
fprintf(fileOut, "%.*s\"%s\"%s", startPos, ptr, searchStr, found + strlen(searchStr));
ptr = found + strlen(searchStr);
}
fprintf(fileOut, "%s", ptr);
}
}
int main() {
char fileName[100];
char searchStr[MAX_LENGTH];
printf("请输入待查找的字符串:");
scanf("%s", searchStr);
convertToLowercase(searchStr);
printf("请输入文件名:");
scanf("%s", fileName);
FILE *fileIn = fopen(fileName, "r");
FILE *fileOut = fopen("fileout.txt", "w");
if (fileIn == NULL) {
printf("无法打开文件 %s\n", fileName);
return 1;
}
if (fileOut == NULL) {
printf("无法创建输出文件\n");
return 1;
}
markString(fileIn, fileOut, searchStr);
fclose(fileIn);
fclose(fileOut);
printf("文件输出完成\n");
return 0;
}
```
你可以将以上代码保存为一个名为 `main.c` 的文件,并编译运行。程序会要求你输入待查找的字符串和文件名,然后会在当前目录下生成一个名为 `fileout.txt` 的文件,其中包含标记后的内容。请确保待查找的字符串不含有空格且长度不超过20。
注意:在标记字符串时,大小写是无关的,即会将文件中的所有匹配项都进行标记。
阅读全文