亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 11871 | 回復(fù): 14
打印 上一主題 下一主題

[C++] 運行C++程序報錯:Segmentation fault(coredump) 請問為什么? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-12-04 11:35 |只看該作者 |倒序瀏覽
5可用積分
bool find(string s,ifstream &f)
{
string str;
f.seekg(0,std::ios_base::beg);  
while(getline(f,str))
{  
       cout << str << endl;
}
return false;
}


int main(int argc, char* argv[])
{
        ifstream f("a.txt");
        for(int i = 0;i < 100;++i){
        cout << i << endl;
         if(!find("s",f))  
           {
                       
           }
        }  
        f.close();
        return 0;
}
在linux下報錯:Segmentation fault(coredump)
在.net下執(zhí)行不報錯,但實際上 f.seekg(0,std::ios_base::beg);  沒起作用,不知道為什么?

[ 本帖最后由 richardzhang 于 2009-12-4 13:19 編輯 ]

最佳答案

查看完整內(nèi)容

樓主,試試在:f.seekg(0,std::ios_base::beg); 后面,加上:f.clear();-------- -------- -------- -------- -------- -------- -------- --------更新一下,上面說錯了。應(yīng)該在seekg之前,調(diào)用clear。如果流fail, seekg不會修改get position。所以需要在seekg之前,而不是之后,調(diào)用clear,清除failbit和badbit,才能使seekg工作。[ 本帖最后由 OwnWaterloo 于 2009-12-4 20:31 編輯 ]

論壇徽章:
2
青銅圣斗士
日期:2015-11-26 06:15:59數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-07-24 06:20:00
2 [報告]
發(fā)表于 2009-12-04 11:35 |只看該作者
樓主,試試在:
f.seekg(0,std::ios_base::beg);

后面,加上:
f.clear();

-------- -------- -------- -------- -------- -------- -------- --------
更新一下,上面說錯了。
應(yīng)該在seekg之前,調(diào)用clear。

如果流fail, seekg不會修改get position。
所以需要在seekg之前,而不是之后,調(diào)用clear,清除failbit和badbit,才能使seekg工作。

[ 本帖最后由 OwnWaterloo 于 2009-12-4 20:31 編輯 ]

論壇徽章:
0
3 [報告]
發(fā)表于 2009-12-04 12:15 |只看該作者
看不出來

seekg是什么東西

論壇徽章:
0
4 [報告]
發(fā)表于 2009-12-04 12:21 |只看該作者

回復(fù) #2 雨過白鷺洲 的帖子

我想只打開一次文件,每次執(zhí)行g(shù)etline前使用seekg回到文件開頭。

論壇徽章:
0
5 [報告]
發(fā)表于 2009-12-04 12:54 |只看該作者
一步一步的debug

論壇徽章:
0
6 [報告]
發(fā)表于 2009-12-04 12:58 |只看該作者
我剛改了一個Segmentation fault,有core就gdb吧。估計是數(shù)組指針混用了。

論壇徽章:
0
7 [報告]
發(fā)表于 2009-12-04 13:02 |只看該作者

大蝦,getline是從輸入讀取一行到緩沖區(qū),好不好。
if(!find("s",f))  你傳給find發(fā)的是一個字符串"s",而不是緩沖區(qū)。
就是getline()函數(shù)用錯了。
不懂c++,不過還是找出了問題,請樓主給分。

[ 本帖最后由 peidright 于 2009-12-4 13:11 編輯 ]

論壇徽章:
0
8 [報告]
發(fā)表于 2009-12-04 13:17 |只看該作者

回復(fù) #2 雨過白鷺洲 的帖子

dsfsdf

論壇徽章:
0
9 [報告]
發(fā)表于 2009-12-04 13:18 |只看該作者

回復(fù) #1 richardzhang 的帖子

sdfsdfsdf

論壇徽章:
0
10 [報告]
發(fā)表于 2009-12-04 16:43 |只看該作者
,學(xué)習(xí)了,真復(fù)雜呀。。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP