c语言怎么读取文件中的字符串长度,[原创]C语言文件利用读写操作,寻找输入文件中的两个最短字符串...

今天给大家分享一下如何在C语言中,利用文件读写操作,寻找出自己输入文件中的两个最短字符串的方法!!!

一、思路分析

根据题目分析,我们可以知道,题目是要求我们利用C语言,先创建一个文件,然后在控制台,也就是程序运行后弹出的黑框,在里面写东西,而且没规定写多少,写的内容会被写入我们创建的文件中,写完之后,让程序自动帮我们查找输入的最短的两个字符串,最后输出。

二、编程步骤

1、申请两个文件指针

2、申请用于存放两个最短字符串的空间

3、创建并打开文件

4、输入内容

5、输入完毕关闭文件

6、打开输入的文件

7、读取并查找最短的两个字符串,将其放入步骤2申请的内存空间

8、查找完毕,关闭文件,输出字符串

9、退出

三、程序流程图

25f0221bf217061e75fa98c65bd69e52.png

四、代码实现

二、三步或许表述不太清楚、不详细,可参考本部分内容。

#include 

#include 

#include 

#define STRING_LENGTH 1000

int main(int argc, char *argv[])

{

// 定义文件输入输出指针

FILE *inputFile, *outputFile;

// 定义文件名

char fileName[] = "myFile.txt";

// 申请或两个用于存储最短字符串的字符串数组

char min1[STRING_LENGTH] = "", min2[STRING_LENGTH] = "";

// 申请或定义一个临时字符串数组

char temp[STRING_LENGTH] = "";

// 申请或定义一个临时字符串数组,长度为1

char ch[1];

// 创建或打开文件

inputFile = fopen(fileName, "w");

if (!inputFile)

{

printf("Failed to create/open file\n");

exit(0);

}

printf("Please enter your strings!\n");

// 控制台输入文字,EOF,即Ctrl+Z结束输入

while ((ch[0]=getchar()) != EOF)

{

// 将控制台输入内容写入文件

fprintf(inputFile, "%c", ch[0]);

}

//关闭文件

fclose(inputFile);

printf("\nStrings of you input:\n");

// 以只读方式打开文件

outputFile = fopen(fileName, "r");

if (!outputFile)

{

printf("Failed to open file\n");

exit(0);

}

// 逐行读取文件中的字符串,字符串最大程度为STRING_LENGTH,读取结束则退出

while (fgets(temp, STRING_LENGTH,outputFile) != NULL)

{

// 每行字符串的长度

int len = strlen(temp);

// 将最后一个字符,即换行符改为'\0'

temp[len - 1] = '\0';

// 输出读取的内容

printf("%s\n", temp);

if (strlen(min1) == 0)

{

// 若min1还未赋值,则对min1赋值

strcpy(min1, temp);

}

else if (strlen(min2) == 0)

{

// 若min1还未赋值,则对min2赋值

strcpy(min2, temp);

}

else

{

// find min strings

if (strlen(temp) 

{

strcpy(min1, temp);

}

else if (strlen(temp) 

{

strcpy(min2, temp);

}

}

if (strlen(min1) > strlen(min2))

{

// 将min1和min2中,最短的字符串放在min1,次短min2

strcpy(temp, min1);

strcpy(min1, min2);

strcpy(min2, temp);

}

// temp置空

*temp = NULL;

}

fclose(outputFile);

printf("\nShortest string:\n");

printf("string1:%s\n", min1);

printf("string2:%s\n", min2);

system("pause");

return 0;

}

运行截图

14a8b081b6f3b3003faf3937a9149e0c.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值