#include "iostream"using namespace std;int main(){char *p[5] ;for (int i = 0; i < 5; i++){p[i] = (char *)calloc(100, sizeof(char));}cout << "please input an number such as \"one hundred"" and twenty five\"" << endl;for (int i = 0; i <= 5; i++){char ch = cin.get();while (ch != ' ' || ch != '\0'){*p[i]++ = ch;ch = cin.get();}if (ch == '\0') break;}for (int i = 0; i < 5; i++){cout << p[i];}return 0;}我想從鍵盤輸入到一段字符串,然后將這段字符串從空格處拆分開到一個指針數組里面,知道字符串結尾現在我我輸入 one hundred and twelve 的時候老是不成功請高手幫我看下
1 回答

躍然一笑
TA貢獻1826條經驗 獲得超6個贊
1、cin.get函數不會接收到'\0'這種字符,輸入回車后結束輸出,因此接收到的應該是'\n'。
2、while的循環(huán)條件,ch != ' ' || ch != '\n'(這里換成\n),不等于空格或者不等于回車,那這不就是永遠為真的?應該是&&吧。
3、*p[i]++ = ch; p的指針已經被++了,后面還怎么能當做cout的首地址呢。
應該改成這個樣子吧
char *p[5] ; char *q; for ( int i = 0; i < 5; i++) { p[i] = ( char *) calloc (100, sizeof ( char )); } cout << "please input an number such as \"one hundred" " and twenty five\"" << endl; for ( int i = 0; i <= 5; i++) { q = p[i]; char ch = cin.get(); while (ch != ' ' && ch != '\n' ) { *q++ = ch; ch = cin.get(); } if (ch == '\n' ) break ; } for ( int i = 0; i < 5; i++) { cout << p[i]; } |
- 1 回答
- 0 關注
- 294 瀏覽
添加回答
舉報
0/150
提交
取消