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); 函式用法沒有問題。我這執行也沒有錯誤。你在butter函式上右鍵開啟那個檔案看看在不在?如果不在,我給你發個。如果在,看看reversion和data是多少。從錯誤提示bai來看,應du該是傳遞給butter函式的實參錯zhi誤。從樓主的調dao用來看應內該是下面這三種情況容 應該是少了一個引數,導... 應該浮點型整型數點面資料丟失造精度準確程式實參a,b,c都整型所warning資料精度丟失 樓下的說的都對,那我給你提供一個另外的方法的,直接不使用math標頭檔案裡的函式,利用其原理自己編寫一個可以隨意改變型別的函式。這是int的。include int pow int x,int y void ... 被調函式,是有返回值 的,如果需要用到返回值,比如輸出 int fun std cout fun 如果你只是想輸專出那句話,那麼呼叫屬時直接fun 還有,你說的這個print 函式名,這個不然是偽 不然這個也是個函式名,表示輸出的意思 不是固定的,只是讓人容易辨識 c語言的話 如果函式名後面加了 就...Matlab中的butter函式使用問題
c語言pow 函式問題,C語言pow 函式問題。
c 中呼叫自定義函式的問題