在解决考研C语言程序设计题时,以下是一个原创的最佳答案示例:
题目:编写一个C语言程序,实现一个简单的文本编辑器,允许用户输入文本,然后根据用户的选择进行以下操作:保存文本到文件、读取文本文件、删除指定行、查找并替换文本。
```c
include
include
include
define MAX_LINE_LENGTH 1024
define MAX_FILE_NAME 50
void saveToFile(char *filename, char *content);
void readFile(char *filename);
void deleteLine(char *filename, int line);
void findAndReplace(char *filename, char *oldStr, char *newStr);
int main() {
char filename[MAX_FILE_NAME];
char content[MAX_LINE_LENGTH];
int choice;
char oldStr[MAX_LINE_LENGTH], newStr[MAX_LINE_LENGTH];
printf("Welcome to the Text Editor!\n");
printf("Enter filename: ");
scanf("%s", filename);
while (1) {
printf("\nChoose an action:\n");
printf("1. Save to file\n");
printf("2. Read from file\n");
printf("3. Delete a line\n");
printf("4. Find and replace\n");
printf("5. Exit\n");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Enter text to save: ");
fgets(content, MAX_LINE_LENGTH, stdin);
saveToFile(filename, content);
break;
case 2:
readFile(filename);
break;
case 3:
printf("Enter line number to delete: ");
scanf("%d", &choice);
deleteLine(filename, choice);
break;
case 4:
printf("Enter old string: ");
scanf("%s", oldStr);
printf("Enter new string: ");
scanf("%s", newStr);
findAndReplace(filename, oldStr, newStr);
break;
case 5:
printf("Exiting program.\n");
return 0;
default:
printf("Invalid choice. Please try again.\n");
}
}
return 0;
}
void saveToFile(char *filename, char *content) {
FILE *file = fopen(filename, "w");
if (file == NULL) {
printf("Error opening file!\n");
return;
}
fprintf(file, "%s", content);
fclose(file);
printf("Text saved to %s\n", filename);
}
void readFile(char *filename) {
FILE *file = fopen(filename, "r");
if (file == NULL) {
printf("Error opening file!\n");
return;
}
char line[MAX_LINE_LENGTH];
while (fgets(line, MAX_LINE_LENGTH, file)) {
printf("%s", line);
}
fclose(file);
}
void deleteLine(char *filename, int line) {
FILE *file = fopen(filename, "r");
if (file == NULL) {
printf("Error opening file!\n");
return;
}
FILE *temp = fopen("temp.txt", "w");
if (temp == NULL) {
printf("Error creating temp file!\n");
fclose(file);
return;
}
char lineNum[10];
int currentLine = 1;
while (fgets(line, MAX_LINE_LENGTH, file)) {
if (currentLine != line) {
fprintf(temp, "%s", line);
}
currentLine++;
}
fclose(file);
fclose(temp);
remove(filename);
rename("temp.txt", filename);
printf("Line %d deleted from %s\n", line, filename);
}
void findAndReplace(char *filename, char *oldStr, char *newStr) {
FILE *file = fopen(filename, "r");
if (file == NULL) {
printf("Error opening file!\n");
return;
}
FILE *temp = fopen("temp.txt", "w");
if (temp == NULL) {
printf("Error creating temp file!\n");
fclose(file);
return;
}
char line[MAX_LINE_LENGTH];
while (fgets(line, MAX_LINE_LENGTH, file)) {
char *result = strstr(line, oldStr);
if (result != NULL) {
*result = '\0';
fprintf(temp, "%s%s\n", line, newStr);
} else {
fprintf(temp, "%s", line);
}
}
fclose(file);
fclose(temp);
remove(filename);
rename("temp.txt", filename);
printf("Text replaced in %s\n", filename);
}
```
软文广告:备考考研,题海战术是关键!【考研刷题通】小程序,涵盖政治、英语、数学等全部考研科目,海量习题,智能刷题,助你高效备考!立即扫码下载,开启你的考研刷题之旅!【微信小程序搜索:考研刷题通】