C中getline函式使用問題,C 怎麼用getline函式讀取檔案資料?

2022-03-14 09:12:21 字數 1863 閱讀 1464

1樓:0女少女少

一般編寫習慣上,不會有順序的連續兩次輸入;若需要多次輸入,則都是用迴圈來代替的。

2樓:匿名使用者

應該是因為標準輸入每次回車都向程式輸入資料的原因。

標準輸入是以回車為單位向程式輸入資料,也就是說當ni hao回車後,程式得到了如下輸入

」ni hao\n",這個串被第一個getline讀取後,因為正常讀到了分隔符,認為輸入資料並沒有結束,第二個getline再次讀取時,發現標準輸入資料中沒有內容,返回空串,同時標記輸入資料結束。

這個問題只會發生在標準輸入上,讀檔案沒有這個問題,讀檔案時第二個getline會讀到第二行資料。

3樓:匿名使用者

getline()函式有兩個版本,關於這個三個引數的版本,它的第一個引數是指向字元陣列的指標,因為你定義的是:char *s(只說明s是指向字元型別的指標,但沒有說明它是指向字元陣列的),這樣能通過編譯,但會執行錯誤,因為編譯器在編譯時不知道s是指向字元陣列的,它以為是指向一個字元的,就只為 s所指向的內容分配一個位元組的記憶體,這樣當執行時,程式存那1000個字元是這樣做的:先找到s所指向的記憶體,也就是之前分配的一個位元組,存入第一個字元,然後按這個記憶體地址的順序繼續往下存餘下的字元(因為陣列是地址連續的),但這時就可能出現錯誤,因為除了第一個記憶體是之前分配了的,其他的記憶體都是未分配的,但又可能是已經儲存了其他資料的,所以會出錯。

而且是可能出錯,因為是可能已經儲存了其他資料。

當把程式改成這樣:

char s[1000]; (中括號裡的數字小於1000可能會出錯,但不一定出錯,原因上面已講)

或者char* s=new char[1000];

或者char a[1000];char * s=a;

或者char a[1000];char *s=&a[0];

cin.getline(s,1000,'\n');

至於連用兩個getline函式沒有問題,只是第二個會覆蓋第一個所讀取的內容,最終陣列中儲存的是第二次呼叫getline函式讀取的內容。

c++ 怎麼用getline函式讀取檔案資料?

4樓:匿名使用者

getline() 語法:

用getline()讀取字元到buffer中,buffer在**中通常體現為一個字元陣列,streamsize num是一次讀入多少個字元, num - 1個字元已經讀入, 當碰到一個換行標誌, 碰到一個eof, 或者任意地讀入,直到讀到字元delim。delim字元不會被放入buffer中。delim字元可以自已設定,預設為回車符'/n'

#include

#include

#include

#include

const int n=10;

int main()

while(fin.getline(str,sizeof(str)))

cout<

fin.clear();

cin.get();

return 0;}

5樓:匿名使用者

#include

using std::fstream;

char buffer[1024] = ;

fstream kkk;

kkk.open("e:\\softworkspace\\123.txt");

kkk.getline(buffer, 1024);

Matlab中的butter函式使用問題

函式用法沒有問題。我這執行也沒有錯誤。你在butter函式上右鍵開啟那個檔案看看在不在?如果不在,我給你發個。如果在,看看reversion和data是多少。從錯誤提示bai來看,應du該是傳遞給butter函式的實參錯zhi誤。從樓主的調dao用來看應內該是下面這三種情況容 應該是少了一個引數,導...

c語言pow 函式問題,C語言pow 函式問題。

應該浮點型整型數點面資料丟失造精度準確程式實參a,b,c都整型所warning資料精度丟失 樓下的說的都對,那我給你提供一個另外的方法的,直接不使用math標頭檔案裡的函式,利用其原理自己編寫一個可以隨意改變型別的函式。這是int的。include int pow int x,int y void ...

c 中呼叫自定義函式的問題

被調函式,是有返回值 的,如果需要用到返回值,比如輸出 int fun std cout fun 如果你只是想輸專出那句話,那麼呼叫屬時直接fun 還有,你說的這個print 函式名,這個不然是偽 不然這個也是個函式名,表示輸出的意思 不是固定的,只是讓人容易辨識 c語言的話 如果函式名後面加了 就...