数据结构:文本编辑器软件 要求: (1)数据结构:定义串变量; (2)存储结构:采用顺序或块链结构; (3)实现功能(以函数方式实现):导入外部文本文件,创建输出文本文件、单词子串查找、单词子串统计,替换文字,统计单词个数。用c语言实现代码
时间: 2024-01-15 07:02:50 浏览: 102
以下是一个基本的文本编辑器软件的代码实现,包含串变量的定义、顺序存储结构和一些基本的功能函数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 100 // 最大串长
// 定义串结构体
typedef struct {
char str[MAX_LEN];
int len;
} String;
// 创建输出文本文件
void createFile(char* fileName) {
FILE* fp = fopen(fileName, "w");
if(fp == NULL) {
printf("Error creating file!\n");
exit(1);
}
fclose(fp);
}
// 导入外部文本文件
String importFile(char* fileName) {
FILE* fp = fopen(fileName, "r");
if(fp == NULL) {
printf("Error opening file!\n");
exit(1);
}
String s;
s.len = 0;
char c = fgetc(fp);
while(c != EOF && s.len < MAX_LEN) {
s.str[s.len++] = c;
c = fgetc(fp);
}
s.str[s.len] = '\0';
fclose(fp);
return s;
}
// 单词子串查找
int findSubstr(String s, char* substr) {
int i, j;
for(i = 0; i < s.len - strlen(substr) + 1; i++) {
for(j = 0; j < strlen(substr); j++) {
if(s.str[i+j] != substr[j]) {
break;
}
}
if(j == strlen(substr)) {
return i;
}
}
return -1;
}
// 单词子串统计
int countSubstr(String s, char* substr) {
int count = 0;
int i, j;
for(i = 0; i < s.len - strlen(substr) + 1; i++) {
for(j = 0; j < strlen(substr); j++) {
if(s.str[i+j] != substr[j]) {
break;
}
}
if(j == strlen(substr)) {
count++;
}
}
return count;
}
// 替换文字
void replaceText(String* s, char* oldSubstr, char* newSubstr) {
int i, j, k;
for(i = 0; i < s->len - strlen(oldSubstr) + 1; i++) {
for(j = 0; j < strlen(oldSubstr); j++) {
if(s->str[i+j] != oldSubstr[j]) {
break;
}
}
if(j == strlen(oldSubstr)) {
for(k = i; k < i + strlen(newSubstr); k++) {
s->str[k] = newSubstr[k-i];
}
for(k = i + strlen(newSubstr); k < s->len - strlen(oldSubstr) + strlen(newSubstr); k++) {
s->str[k] = s->str[k + strlen(oldSubstr) - strlen(newSubstr)];
}
s->len = s->len - strlen(oldSubstr) + strlen(newSubstr);
}
}
}
// 统计单词个数
int countWords(String s) {
int count = 0;
int i;
for(i = 0; i < s.len; i++) {
if(s.str[i] == ' ') {
count++;
}
}
return count + 1;
}
int main() {
String s;
char fileName[20];
char substr[20];
char oldSubstr[20];
char newSubstr[20];
printf("Enter file name: ");
scanf("%s", fileName);
createFile("output.txt");
s = importFile(fileName);
printf("File content: %s\n", s.str);
printf("Enter substring to search: ");
scanf("%s", substr);
int index = findSubstr(s, substr);
if(index == -1) {
printf("Substring not found.\n");
} else {
printf("Substring found at index %d.\n", index);
}
printf("Enter substring to count: ");
scanf("%s", substr);
int count = countSubstr(s, substr);
printf("Substring count: %d\n", count);
printf("Enter old substring to replace: ");
scanf("%s", oldSubstr);
printf("Enter new substring: ");
scanf("%s", newSubstr);
replaceText(&s, oldSubstr, newSubstr);
printf("New file content: %s\n", s.str);
printf("Word count: %d\n", countWords(s));
return 0;
}
```
该代码实现了文本编辑器软件的基本功能,包括导入外部文本文件、创建输出文本文件、单词子串查找、单词子串统计、替换文字和统计单词个数。它采用了顺序存储结构,并且定义了串结构体来存储文本。
阅读全文