我试着问K数量的单词添加到一个矩阵中。我有2个问题:
1.我试图设定strlen(字符串)必须小于n(矩阵大小)的条件,但是当它进入do while循环时,它永远不会退出。
1.我怎样才能让for循环重复直到输入了k个单词?
几天前我已经试过了,做的时候效果很好。直到我改变了一些东西,它变得很乱。
/* Enter the matrix dimension */
int n;
do{
printf("\nEnter the matrix size");
scanf("%d", &n);
}while(2>n);
/* Ask for the amount of words the user will enter */
int k;
do{
printf("\nInsert how many words you will enter:");
scanf("%d", &k);
}while(k<0);
/* k Words loop */
int amountOfWords=0;
char string[20];
int i;
for(i=0; i<k; i++, amountOfWords++)
{
do {
printf("\nEnter the %d word:\n", amountOfWords+1);
scanf("%s", &string);
}while(strlen(string) > n);
}
1条答案
按热度按时间0qx6xfy61#
当前代码的问题在于,在do-while循环中,变量amountOfWords永远不会递增,因此循环strlen(string)〉n的条件始终为真。
以下是解决此问题的一种方法:
这样,如果用户输入的单词长度超过最大大小(n),则循环将再次询问单词,直到输入有效单词为止,并且变量amountOfWords将在输入有效单词之后递增。
另一种方法是使用while循环,如下所示:
以此方式,循环将保持运行,直到amountOfWords达到期望的单词量(k)。