簡體   English   中英

對於循環長度問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM