用c语言在main函数中创建一个文件,将m个字符串写入文件中。打开该文件,读出所有字符串,并找出最大的一个字符串,将其保存到另一个文件中
时间: 2023-08-31 12:23:40 浏览: 93
### 回答1:
以下是使用C语言在main函数中创建一个文件,将字符串m写入文件中,并读取文件中的所有字符串,并找到其中最长的一个字符串并保存到另一个文件中的示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char m[] = "Hello World!";
FILE *fp;
fp = fopen("example.txt", "w");
fputs(m, fp);
fclose(fp);
fp = fopen("example.txt", "r");
char str[100];
char max_str[100];
int max_len = 0;
while(fgets(str, 100, fp) != NULL) {
printf("%s", str);
int len = strlen(str);
if(len > max_len) {
max_len = len;
strcpy(max_str, str);
}
}
fclose(fp);
fp = fopen("max_str.txt", "w");
fputs(max_str, fp);
fclose(fp);
return 0;
}
```
这个程序创建了一个名为“example.txt”的文件,并将字符串“Hello World!”写入该文件中。然后,程序读取该文件中的所有字符串,并找到其中最长的一个字符串,并将其保存到另一个名为“max_str.txt”的文件中。
### 回答2:
使用C语言在main函数中创建一个文件,并将m个字符串写入该文件的方法如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char **strings; // 声明一个字符串数组
int m; // 字符串的个数
FILE *file;
int i;
printf("请输入要写入的字符串个数m:");
scanf("%d", &m);
strings = (char **)malloc(m * sizeof(char *)); // 分配字符串数组的内存
// 获取m个字符串
for (i = 0; i < m; i++) {
char *str;
int len;
printf("请输入第%d个字符串:", i + 1);
scanf("%d", &len);
str = (char *)malloc((len + 1) * sizeof(char)); // 分配字符串的内存
scanf("%s", str);
strings[i] = str;
}
// 将字符串写入文件
file = fopen("data.txt", "w");
if (file == NULL) {
printf("无法创建文件!\n");
return 1;
}
for (i = 0; i < m; i++) {
fputs(strings[i], file);
fputc('\n', file); // 每个字符串后面加入换行符
}
fclose(file);
// 读取文件并找出最大的一个字符串
file = fopen("data.txt", "r");
char *maxString = (char *)malloc(100 * sizeof(char)); // 假设最大字符串长度不超过100
char str[100];
int maxLength = 0;
while (fgets(str, 100, file) != NULL) {
int len = strlen(str);
if (len > maxLength) {
maxLength = len;
strcpy(maxString, str);
}
}
fclose(file);
// 将最大的一个字符串保存到另一个文件
file = fopen("max_string.txt", "w");
if (file == NULL) {
printf("无法创建文件!\n");
return 1;
}
fputs(maxString, file);
fclose(file);
printf("成功创建文件并完成写入和读取操作!\n");
// 释放内存
for (i = 0; i < m; i++) {
free(strings[i]);
}
free(strings);
free(maxString);
return 0;
}
```
以上代码通过动态分配内存创建一个字符串数组,获取m个字符串并写入名为"data.txt"的文件中。然后,在读取该文件时找出最长的字符串,并将其保存到名为"max_string.txt"的另一个文件中。最后,释放分配的内存并结束程序。
### 回答3:
在C语言中可以使用标准库函数来完成创建文件、写入字符串和读取字符串的操作。以下是一个示例代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void findMaxString(char* filename1, char* filename2, int m) {
FILE* file1 = fopen(filename1, "w"); // 创建文件
if (file1 == NULL) {
printf("无法创建文件!\n");
return;
}
// 写入m个字符串到文件
for (int i = 0; i < m; i++) {
char string[100];
printf("请输入第%d个字符串:", i + 1);
scanf("%s", string);
fprintf(file1, "%s\n", string);
}
fclose(file1);
FILE* file2 = fopen(filename1, "r"); // 打开文件
if (file2 == NULL) {
printf("无法打开文件!\n");
return;
}
char maxString[100];
while (!feof(file2)) { // 读取所有字符串
char string[100];
fgets(string, 100, file2);
if (strlen(string) > strlen(maxString)) { // 找出最大的字符串
strcpy(maxString, string);
}
}
fclose(file2);
FILE* file3 = fopen(filename2, "w"); // 创建新文件
if (file3 == NULL) {
printf("无法创建文件!\n");
return;
}
fprintf(file3, "%s", maxString); // 将最大字符串保存到新文件
fclose(file3);
printf("最大的字符串已保存到文件:%s\n", filename2);
}
int main() {
char filename1[50];
char filename2[50];
int m;
printf("请输入要创建的文件名:");
scanf("%s", filename1);
printf("请输入要保存最大字符串的文件名:");
scanf("%s", filename2);
printf("请输入要写入的字符串个数:");
scanf("%d", &m);
findMaxString(filename1, filename2, m);
return 0;
}
```
以上代码实现了在`main`函数中创建一个文件并写入`m`个字符串。然后打开该文件,读取所有字符串,并找出最大的一个字符串。最后将最大字符串保存到另一个文件中。用户需要在运行程序时输入文件名和字符串个数。最终结果会打印在屏幕上,并保存到指定的文件中。
阅读全文