【发布时间】:2017-12-15 20:08:50
【问题描述】:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
int num_test,i,j,k;
scanf("%d ",&num_test);
char array[num_test][35];
for (i=0;i<num_test;i++){
fgets(array[i],35,stdin);
array[i][strcspn(array[i],"\n")]='\0';
}
for (j=0;j<num_test;j++){
for (k=0;k<35;k++){
while(array[j][k] != '\0'){ // I am seeing when the name entered ends then this loop should stop.
if (array[j][1] == 'a'){
array[j][1] = 'A';
}
}
}
}
return 0;
}
上面的代码并没有终止,而是继续接受输入并且没有显示任何结果。如果我删除第二个 for 循环,问题不会持续存在。我将 2 输入到 scanf 然后 james 然后绑定到两个 fget 但它只是不断要求更多输入。
【问题讨论】:
-
while(array[j][k] != '\0')==>if(array[j][k] == '\0') {break;}因为你已经在循环k。以下行应使用索引k而不是1,假设您想将每个'a'大写。 -
您为什么期待任何结果?您的代码不输出任何内容。
-
@ChrisTurner 程序没有终止,它继续接受输入
-
否 - 它只接受
num_test输入行。根据@WeatherVane 的评论,它不会因为不必要的while循环而终止 -
确实,
while循环一旦开始就永远不会终止,因为它的主体没有任何改变会导致它终止。
标签: c arrays string while-loop