[英]For loop length problems
該代碼將在運行時輸入字符串,但是該代碼接受的字符串比上述大小n小1。 錯誤在哪里?
假設n = 3,但是循環僅運行兩次,即n-1次,因此僅將兩個字符串作為輸入
int main(){
int n;
cin>>n;
char str[n][100];
for(int i=0;i<n;i++)
{
char c;
int j=0;
while((c=getchar())!='\n')
{
str[i][j++] = c;
}
str[i][j] ='\0';
}
}
它正在讀取\\n
返回字符(從您填充n
),並使第一個字符串為空。 只需在第一個測試結束之前執行另一個getchar()
即可消除輸入。
為了提高魯棒性,您還可以嘗試: cin.ignore(INT_MAX);cin.clear();cin.sync();
。
示例(我的編譯器不喜歡您的語法的一部分,因此我不得不重做它,專注於新的getchar
:
int main() {
int n;
cin >> n;
char** str = new char*[n];
for (int i = 0; i < n; i++)
str[i] = new char[100];
getchar();
for (int i = 0; i<n; i++)
{
char c;
int j = 0;
while ((c = getchar()) != '\n')
{
str[i][j++] = c;
}
str[i][j] = '\0';
}
for (int i = 0; i < n; i++)
delete[] str[i];
delete[] str;
}
(是的,我知道我距http://wiki.c2.com/?ThreeStarProgrammer僅1星,只需這樣做即可回答問題。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.