C++如何將運(yùn)行結(jié)果保存到txt中
將C++運(yùn)行結(jié)果保存到txt中
C++運(yùn)行完成后,有時(shí)需要將結(jié)果保存在類似txt等的文檔中,以便于后續(xù)查看或調(diào)用,那如何實(shí)現(xiàn)那?
可以選用fopen函數(shù),如下:
FILE * fp;
fp = fopen ("file.txt", "w+");
fprintf(fp,"%c\n",Helloworld);
fclose(fp);fopen的定義為fopen ( “filename”, “mode” );
mode:w+(write/update: 為輸入和輸出創(chuàng)建一個(gè)空文件,如果文件已存在,則將已有文件內(nèi)容舍棄,按照空文件對(duì)待。)
按照上述函數(shù),更改之前的數(shù)組的程序,0-99存儲(chǔ)到數(shù)組中,并判定是否為5的倍數(shù),將運(yùn)行結(jié)果存儲(chǔ)到txt中。
int main()
{
int i,j;
char result;
FILE * fp;
fp = fopen ("file.txt", "w+");
int array1[100];
for(i=0;i<100;i++)
{
array1[i]=i;
}
for(j=0;j<100;j++)
{
if( 0 == array1[j]%5)
{
result = 'Y';
}
else
{
result = 'N';
}
fprintf(fp,"%d\t%c\n",array1[j],result);
}
fclose(fp);
return 0;
}```
注意:和之前程序相比,該程序中將判定結(jié)果Y和N均賦值給了result,簡(jiǎn)化了代碼。C++保存數(shù)據(jù)
再用C++編寫(xiě)程序時(shí),你也許會(huì)發(fā)現(xiàn),每次的數(shù)據(jù)都得重新計(jì)算,可不可以將一些數(shù)據(jù)保存起來(lái)下次在使用呢?接下來(lái)就將學(xué)習(xí)C++保存數(shù)據(jù)的方法
方法一:freopen
說(shuō)到保存數(shù)據(jù),我們最熟悉的肯定就是freopen了,我們先來(lái)看看它的函數(shù)原型:
FILE *__cdecl freopen( const char * __restrict__ _Filename, const char * __restrict__ _Mode, FILE * __restrict__ _File )
_Filename:是文件名,用于存儲(chǔ)輸入輸出的自定義文件名。_Mode指文件打開(kāi)的模式(如r-只讀,w-只寫(xiě)等)。_File:指一個(gè)文件,通常使用標(biāo)準(zhǔn)流文件。
我們先來(lái)看一個(gè)簡(jiǎn)單的示例程序:
#include <bits/stdc++.h>
using namespace std;
int a;
int main() {
freopen("text.txt","w",stdout); //打開(kāi)text.txt,并設(shè)置為輸出
cin>>a;
cout<<a<<endl; //將a輸出到text.txt
fclose(stdout); //關(guān)閉文件
return 0;
}運(yùn)行程序,在文件夾中找到生成的text.txt,就可以看到輸出的值了,并且要記得用fclose關(guān)閉,以便下次打開(kāi)。在這里我們用的是w,你也可以改成別的試試。
方法二:ifstream和ofstream
那么除了freopen,還有沒(méi)有別的方法了呢?
答案是必然的,我們就繼續(xù)來(lái)學(xué)習(xí)ifstream和ofstream。
為了使用他們,我們需要在開(kāi)頭添加一個(gè)頭文件。
#include <fstream>
我們?cè)賮?lái)定義兩個(gè)變量,
ifstream fr; //讀入 ofstream fw; //輸出
這兩個(gè)變量分別表示讀入和輸出。我們先來(lái)看看fr。
fr有一個(gè)函數(shù)open,用來(lái)打開(kāi)文件,像下面這樣:
fr.open("text.txt");了解了open函數(shù)的用法,我們應(yīng)該怎樣讀入數(shù)據(jù)呢?
其實(shí)這也很簡(jiǎn)單,它的用法和cin幾乎一樣:
int a; //要讀入的數(shù)
fr.open("text.txt"); //打開(kāi)文件
fr>>a; //讀入一個(gè)數(shù)a
fr.close(); //關(guān)閉文件在最后一行,我們用了一個(gè)close函數(shù),它用來(lái)關(guān)閉文件,和freopen一樣,這是用來(lái)方便下次打開(kāi)。
和ifstream一樣,ofstream也同樣有open和close:
ofstream fw;
fw.open("text.txt"); //打開(kāi)文件
fw<<"hello,world!"; //讀入一個(gè)數(shù)a
fw.close(); //關(guān)閉文件這個(gè)程序就可以在text.txt中輸出了,你肯定會(huì)發(fā)現(xiàn),我們?cè)?strong>第3行用了<<符號(hào),這和cout完全一樣,的確,這就是他的方便之處。
最后,我們把他們整合起來(lái):
#include <bits/stdc++.h>
#include <fstream> //所需頭文件
using namespace std;
int a;
int main() {
ofstream fw;
ifstream fr;
fr.open("text.txt"); //打開(kāi)text.txt
fr>>a; //從text.txt讀入一個(gè)數(shù)
fr.close(); //關(guān)閉文件
cout<<"上次輸入的數(shù):"<<a<<endl;
cout<<"輸入一個(gè)數(shù):";
cin>>a;
fw.open("text.txt"); //打開(kāi)text.txt
fw<<a; //在text.txt中輸出一個(gè)數(shù)
fw.close(); //關(guān)閉文件
return 0;
}總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C++實(shí)現(xiàn)LeetCode(34.在有序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(34.在有序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
C++面試基礎(chǔ)之static關(guān)鍵字詳解
這篇文章主要給大家介紹了關(guān)于C++面試基礎(chǔ)之static關(guān)鍵字的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02
C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單掃雷游戲
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02
從C到C++理解右值引用和移動(dòng)語(yǔ)義的過(guò)程解析
在C++中,理解右值引用(Rvalue references)和移動(dòng)語(yǔ)義(Move semantics)是現(xiàn)代C++編程的核心部分,它們極大地提高了程序的性能和資源管理效率,下面將介紹從C到C++理解右值引用和移動(dòng)語(yǔ)義的方法,感興趣的朋友跟隨小編一起看看吧2025-11-11

