安卓版c语言文档编辑程序代码正确版新

48 阅读3分钟

#include <stdio.h> #include <stdlib.h> #include <string.h>

// 定义最大行长度和缓冲区大小 #define MAX_LINE_LENGTH 1024 #define BUFFER_SIZE 10240

// 读取文件内容并显示 void readFile(char *filename) { FILE *file = fopen(filename, "r"); if (file == NULL) { printf("无法打开文件 %s\n", filename); return; }

char line[MAX_LINE_LENGTH];
while (fgets(line, MAX_LINE_LENGTH, file)!= NULL) {
    printf("%s", line);
}

fclose(file);

}

// 输入内容并保存到文件 void writeFile(char *filename) { FILE *file = fopen(filename, "w"); if (file == NULL) { printf("无法创建或打开文件 %s 进行写入\n", filename); return; }

printf("输入要保存的内容,输入'q'结束输入:\n");
char line[MAX_LINE_LENGTH];
while (1) {
    printf("> ");
    fgets(line, MAX_LINE_LENGTH, stdin);
    line[strcspn(line, "\n")] = '\0';  // 去除换行符

    if (strcmp(line, "q") == 0) {
        break;
    }

    fprintf(file, "%s\n", line);
}

fclose(file);

}

// 删除文件内容 void deleteFileContent(char *filename) { FILE *file = fopen(filename, "w"); if (file == NULL) { printf("无法打开文件 %s 进行删除操作\n", filename); return; } fclose(file); printf("文件内容已删除\n"); }

// 在文件末尾添加内容 void appendToFile(char *filename) { FILE *file = fopen(filename, "a"); if (file == NULL) { printf("无法打开文件 %s 进行添加操作\n", filename); return; }

printf("输入要添加的内容,输入'q'结束输入:\n");
char line[MAX_LINE_LENGTH];
while (1) {
    printf("> ");
    fgets(line, MAX_LINE_LENGTH, stdin);
    line[strcspn(line, "\n")] = '\0';  // 去除换行符

    if (strcmp(line, "q") == 0) {
        break;
    }

    fprintf(file, "%s\n", line);
}

fclose(file);

}

// 对文件内容进行排序(假设按字符串升序) void sortFileContent(char *filename) { FILE *file = fopen(filename, "r"); if (file == NULL) { printf("无法打开文件 %s 进行排序操作\n", filename); return; }

char lines[BUFFER_SIZE][MAX_LINE_LENGTH];
int lineCount = 0;

char line[MAX_LINE_LENGTH];
while (fgets(line, MAX_LINE_LENGTH, file)!= NULL) {
    strcpy(lines[lineCount], line);
    lineCount++;
}

fclose(file);

for (int i = 0; i < lineCount - 1; i++) {
    for (int j = 0; j < lineCount - i - 1; j++) {
        if (strcmp(lines[j], lines[j + 1]) > 0) {
            char temp[MAX_LINE_LENGTH];
            strcpy(temp, lines[j]);
            strcpy(lines[j], lines[j + 1]);
            strcpy(lines[j + 1], temp);
        }
    }
}

file = fopen(filename, "w");
if (file == NULL) {
    printf("无法打开文件 %s 进行写入排序后内容\n", filename);
    return;
}

for (int i = 0; i < lineCount; i++) {
    fprintf(file, "%s", lines[i]);
}

fclose(file);
printf("文件内容已排序\n");

}

// 修改文件中的指定行 void modifyFileLine(char *filename, int lineNumber) { FILE *file = fopen(filename, "r"); if (file == NULL) { printf("无法打开文件 %s 进行修改操作\n", filename); return; }

char lines[BUFFER_SIZE][MAX_LINE_LENGTH];
int lineCount = 0;

char line[MAX_LINE_LENGTH];
while (fgets(line, MAX_LINE_LENGTH, file)!= NULL) {
    strcpy(lines[lineCount], line);
    lineCount++;
}

fclose(file);

if (lineNumber < 1 || lineNumber > lineCount) {
    printf("无效的行号\n");
    return;
}

printf("输入修改后的内容:\n");
printf("> ");
fgets(line, MAX_LINE_LENGTH, stdin);
line[strcspn(line, "\n")] = '\0';  // 去除换行符

strcpy(lines[lineNumber - 1], line);

file = fopen(filename, "w");
if (file == NULL) {
    printf("无法打开文件 %s 进行写入修改后内容\n", filename);
    return;
}

for (int i = 0; i < lineCount; i++) {
    fprintf(file, "%s", lines[i]);
}

fclose(file);
printf("指定行已修改\n");

}

int main() { int choice; char filename[100];

do {
    printf("1. 读取文件\n");
    printf("2. 输入并保存到文件\n");
    printf("3. 删除文件内容\n");
    printf("4. 在文件末尾添加内容\n");
    printf("5. 对文件内容排序\n");
    printf("6. 修改文件中的指定行\n");
    printf("7. 显示文件内容\n");
    printf("8. 退出\n");
    printf("请选择操作: ");
    scanf("%d", &choice);

    printf("请输入文件名: ");
    scanf("%s", filename);

    switch (choice) {
        case 1:
            readFile(filename);
            break;
        case 2:
            writeFile(filename);
            break;
        case 3:
            deleteFileContent(filename);
            break;
        case 4:
            appendToFile(filename);
            break;
        case 5:
            sortFileContent(filename);
            break;
        case 6:
            int lineNumber;
            printf("请输入要修改的行号: ");
            scanf("%d", &lineNumber);
            modifyFileLine(filename, lineNumber);
            break;
        case 7:
            readFile(filename);
            break;
        case 8:
            printf("退出程序\n");
            return 0;
        default:
            printf("无效的选择\n");
            break;
    }
} while (1);

return 0;

}