关于用c语言来实现txt文件的输入输出问题

刚看了别人的文章,做了修改,记录一下供自己以后使用。

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[100];
	FILE *fpWrite=fopen("data.txt","w");
	if(fpWrite==NULL)
		return 0;
	printf("请输入你要写进data文件的内容:");
	gets(str1);
	for(int i=0;i<strlen(str1);i++)
		fprintf(fpWrite,"%c",str1[i]);
	fclose(fpWrite);
	char str2[100];
	FILE *fpRead=fopen("data.txt","r");
	if(fpRead==NULL)
		return 0;
	int i=0;
	printf("data文件中的内容是:");
	while(fscanf(fpRead,"%c",&str2[i])!=EOF)
	{
		printf("%c",str2[i]);
		i++;
	}
	printf("\n");
	getchar();
	return 1;
}

在这里插入图片描述

以下代码实现了双调旅行员售货问题的解决方法,并使用了 txt 文件进行输入输出。 ``` #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXN 1000 #define INF 0x3f3f3f3f int n; // 城市数量 int dist[MAXN][MAXN]; // 距离矩阵 int dp[MAXN][MAXN]; // 动态规划数组 int path[MAXN][MAXN]; // 路径记录数组 int cmp(const void *a, const void *b) { return *(int *)a - *(int *)b; } int main() { FILE *fp = fopen("input.txt", "r"); fscanf(fp, "%d", &n); // 读入距离矩阵 for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { fscanf(fp, "%d", &dist[i][j]); } } fclose(fp); // 初始化动态规划数组 memset(dp, INF, sizeof(dp)); dp[1][1] = 0; // 动态规划 for (int i = 2; i <= n; i++) { for (int j = 1; j <= i - 1; j++) { for (int k = 1; k <= j; k++) { int cost = dist[k][i] + dp[j][k]; if (cost < dp[i][j]) { dp[i][j] = cost; path[i][j] = k; } } } } // 找到最小距离 int ans = INF; int k = 1; for (int j = 1; j < n; j++) { if (dp[n][j] + dist[j][n] < ans) { ans = dp[n][j] + dist[j][n]; k = j; } } // 输出路径 int p = n; int q = k; int route[MAXN]; int len = 0; while (p > 1 || q > 1) { route[len++] = p; p = q; q = path[p][q]; } route[len++] = 1; // 反转路径 qsort(route, len, sizeof(int), cmp); // 输出路径到文件 fp = fopen("output.txt", "w"); for (int i = 0; i < len; i++) { fprintf(fp, "%d ", route[i]); } fprintf(fp, "\n"); // 输出最小距离到文件 fprintf(fp, "%d\n", ans); fclose(fp); return 0; } ``` 在此代码,程序首先从 `input.txt` 文件读入城市数量和距离矩阵,然后进行动态规划求解。最后,程序将结果输出到 `output.txt` 文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值