将字符串输入2D数组

时间:2014-03-30 20:47:27

标签: c multidimensional-array character-arrays

对于家庭作业的一部分,提示用户输入将存储在2D阵列中的单词。然后,这些输入的字符串将隐藏在单词搜索拼图中。提示需要保持循环,直到用户输入单词“完成”或用户输入了20个单词。此外,如果单词大于实际拼图,则应打印错误消息,并且提示将再次循环。我认为while循环是解决这个问题的最佳方法。

这是我到目前为止所做的:

int row = 0;
int column = 0;
char word[20][100] = {};
int i = 0;

while(i < 20)
    {
      printf("Enter a word you would like hidden in the puzzle. Type 'done' when finished:\n");
      scanf("%s",word[i]);
      if((strlen(word[i]) > row) || (strlen(word[i]) > column))
      {
        printf("Error. Word was too long to enter into puzzle.\n");
      }
      else
      {
        i++;
      }
    }

循环继续,直到输入20个单词,但是如何重新配置​​while语句,以便程序在输入“done”后退出循环?此外,输入“完成”时,不应将其输入数组。数组中的最后一个字符串应该是在“完成”之前输入的内容。

2 个答案:

答案 0 :(得分:2)

   while(i < 20)
   {
      printf("Enter a word you would like hidden in the puzzle. Type 'done' when finished:\n");
      scanf("%s",word[i]);

      if(strcmp(word[i],"done")==0)
          break;


      if((strlen(word[i]) > row) || (strlen(word[i]) > column))
      {
          printf("Error. Word was too long to enter into puzzle.\n");
      }
      else
      {
         i++;
      }
  }

答案 1 :(得分:0)

在您的代码中使用它:

...
scanf("%s",word[i]);
if(strcmp(word[i],"done")==0){
    strcpy(word[i],"");
    break;
}
if((strlen(word[i]) > row) || (strlen(word[i]) > column))
...

希望它有所帮助...