在main函数中创建一个文件,将键盘输入的字符串(该字符串只包含数字、字母和*)写入文件中。打开该文件,读出字符串。若字符串中号多于n个,则删除多余的号;若少于或等于n个,则输出*号的个数,并将新串存放到另一个文件中。要求:n由键盘输入
2条回答 默认 最新
- 百科新知 2023-04-06 09:02关注
引用新必应
以下是一个简单的C程序示例,可以创建一个文件并将键盘输入的字符串写入该文件中,然后读取文件内容,并按照要求进行处理:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int n; // 定义变量 n printf("请输入 n 的值:"); scanf("%d", &n); // 接收用户输入 n 的值 char str[1024]; // 定义字符串变量 str,最多存储 1024 个字符 printf("请输入一个字符串:"); scanf("%s", str); // 接收用户输入的字符串 FILE* fp; // 定义文件指针 fp = fopen("test.txt", "w"); // 创建一个名为 test.txt 的文件,并以写入模式打开 if (fp == NULL) { // 判断文件是否成功打开 printf("文件创建失败\n"); exit(1); // 如果文件打开失败,直接退出程序 } fprintf(fp, "%s", str); // 将字符串写入文件 fclose(fp); // 关闭文件 fp = fopen("test.txt", "r"); // 以读取模式打开文件 if (fp == NULL) { // 判断文件是否成功打开 printf("文件打开失败\n"); exit(1); // 如果文件打开失败,直接退出程序 } fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾 int file_length = ftell(fp); // 获取文件长度 fseek(fp, 0, SEEK_SET); // 将文件指针移回文件头 char* file_content = (char*)malloc(file_length + 1); // 根据文件长度动态分配内存 fread(file_content, file_length, 1, fp); // 读取文件内容到内存中 fclose(fp); // 关闭文件 int asterisk_count = 0; // 定义变量存储 * 号的个数 char* new_str = (char*)malloc(file_length + 1); // 根据文件长度动态分配内存 int new_str_pos = 0; for (int i = 0; i < file_length; i++) { if (file_content[i] == '*') { asterisk_count++; } else { new_str[new_str_pos++] = file_content[i]; } } new_str[new_str_pos] = '\0'; // 给新字符串末尾加上结束符 if (strlen(new_str) > n) { // 如果新字符串中字符多于 n 个 int delete_count = strlen(new_str) - n; printf("删除了 %d 个 * 号\n", delete_count); for (int i = 0; i < delete_count; i++) { for (int j = strlen(new_str) - 1; j > 0; j--) { if (new_str[j] == '*') { new_str[j] = '\0'; break; } } } } else if (strlen(new_str) <= n) { // 如果新字符串中字符少于或等于 n 个 printf("* 号的个数为 %d\n", asterisk_count); fp = fopen("new_test.txt", "w"); // 创建另一个名为 new_test.txt 的文件,并以写入模式打开 fprintf(fp, "%s", new_str); // 将新字符串写入新文件中 fclose(fp); // 关闭文件 } free(file_content); // 释放动态分配的内存 free(new_str); return 0; }
程序中首先接收用户输入的 n 值和字符串,然后创建一个名为 test.txt 的文件,并将字符串写入该文件中。接着以读取模式打开文件,并将文件内容读取到内存中。随后判断文件中 * 号的个数,并根据要求进行处理。如果新字符串中字符多于 n 个,则删除多余的 * 号;如果少于或等于 n 个,则输出 * 号的个数并将新字符串存入另一个名为 new_test.txt 的文件中。
需要注意的是,在实际使用中,我们需要进行一些错误处理,例如判断文件是否成功创建、打开和关闭等,这里只是简单示范了程序的实现方法。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报