很抱歉,如果标题不是特定的,但是我不太确定该如何为该标题命名。我正在创建一个加密给定字符串的函数。在这里:
int ind(char c, char * t){
int i = 0;
while (i != strlen(t)){
if (t[i] == c) return i;
}
return -1;
}
void translate2 (char * c, char * ret){
char used[1000], d;
int i = 18, size = 0;
for (i=0; i < strlen(c);i++){
printf("\nChar: %c",c[i]);
printf("arguments going in are char %c and str %s", c[i], used);
if (ind(c[i], used) == -1){
used[size] = c[i];
ret[size] = c[i];
size++;
}
else{
if (ind(c[i], used) == 0){
d = used[size];
}
else {d = used[ind(c[i], used)-1];}
/*printf("Thus, our d shall be %c\n\n", d);*/
ret[size] = d;
size++;
}
printf("\nSeq: %s", used);
printf("\nOutput: %s\n", ret);
}
}
很抱歉,如果代码混乱,我对此还很陌生。我想代码实际上不是很重要。我在这里的问题是,该代码按首次循环的预期运行。完成后,程序将停止。我不知道为什么会发生这种情况,而且调试器还不足以使用它们。谁能指出我正确的方向?任何帮助表示赞赏。谢谢!
答案 0 :(得分:2)
while (i != strlen(t)){
if (t[i] == c) return i;
}
‘i’不会在循环中递增。您正在无限期地检查第一个元素