用C++,把一个文件的重写,在每一行前面加上行号和空格。怎么写程序?文件名称是“fish.txt”。
2个回答
展开全部
/*
将读出行的首部添加行号和空格后写到另一个文件filen.txt中,然后删除文件file.txt,再将filen.txt改为file.txt即可。在磁盘文件中添加内容再写回是很难实现的,且又因为文本文件(*.txt)的特殊结构,即使在不改变字符个数的情况下,读出再写回都有可能出错,所以下述代码使用了变通的方法,既简单,又可靠,这里强力推荐!
*/
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int n = 1;
char s[1025]; // 假定每行不超过1024个字符
FILE *fin = fopen("file.txt","rt");
FILE *fout = fopen("filen.txt","wt");
if((fin == NULL) || (fout == NULL)) {
printf("无法打开文件!\n");
exit(1);
}
while(fscanf(fin,"%s",s) == 1) {
fprintf(fout,"%d %s",n,s);
n++;
}
fclose(fin);
fclose(fout);
return 0;
}
将读出行的首部添加行号和空格后写到另一个文件filen.txt中,然后删除文件file.txt,再将filen.txt改为file.txt即可。在磁盘文件中添加内容再写回是很难实现的,且又因为文本文件(*.txt)的特殊结构,即使在不改变字符个数的情况下,读出再写回都有可能出错,所以下述代码使用了变通的方法,既简单,又可靠,这里强力推荐!
*/
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int n = 1;
char s[1025]; // 假定每行不超过1024个字符
FILE *fin = fopen("file.txt","rt");
FILE *fout = fopen("filen.txt","wt");
if((fin == NULL) || (fout == NULL)) {
printf("无法打开文件!\n");
exit(1);
}
while(fscanf(fin,"%s",s) == 1) {
fprintf(fout,"%d %s",n,s);
n++;
}
fclose(fin);
fclose(fout);
return 0;
}
展开全部
#include <Windows.h>
#include <iostream>
using namespace std;
int main()
{
FILE* file = NULL;
if(0 == fopen_s(&file,"fish.txt","w"))
{
fprintf_s(file,"%s","1 \n2 \n3 \n");
}
fclose(file);
return 0;
}
#include <iostream>
using namespace std;
int main()
{
FILE* file = NULL;
if(0 == fopen_s(&file,"fish.txt","w"))
{
fprintf_s(file,"%s","1 \n2 \n3 \n");
}
fclose(file);
return 0;
}
更多追问追答
追问
windows.h是什么头文件?
追答
这是Windows平台下的头文件,这里可以不用,以前我写代码时留下的忘记删了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询