gpt4 book ai didi

c - 无法访问代码并且无法读取所有输入字母

转载 作者:行者123 更新时间:2023-11-30 16:39:09 26 4
gpt4 key购买 nike

我正在用 C 语言编写一个简短的程序,它基本上要求用户输入一个 key ,该 key 由按某种顺序列出的五个字符 a、b、c、d、r 组成,每个字符只出现一次,没有空格。然后程序要求用户输入 7 个字母,这些字母也按某种顺序由 5 个字符 a、b、c、d、r 组成。所以存在自然顺序a、b、c、d、r。因此,“7个字母”中输入的每个字母都将被更改为加密后的字母,因为自然顺序中的字母将被更改为 key 中相应位置的字母。例如,如果 key 是 r,b,c,d,a,7 个字母是 a,b,b,a,c,c,r。加密后的值为 r,b,b,r,c,c,a。并且加密后的内容将会被打印出来。如果用户输入超过7个字母,程序将只读取前7个字母,如果用户输入7个字母中除a、b、c、d、r以外的字母,程序将报告错误并终止。

所以现在我编写了程序并测试了它。然而,虽然我花了3个小时调试它,但它仍然说有一些无法访问的代码,并且scanf()似乎无法捕获用户输入的所有7个字母。谁能帮我检查一下我的代码吗?非常感谢。

int main() {
char natural[5]={'a','b','c','d','r'};
char key[5];
char word[7];
printf(" Enter key: ");
scanf("%1c%1c%1c%1c%1c",&key[0],&key[1],&key[2],&key[3],&key[4]);
printf(" Enter word: ");
int LetterNum;
LetterNum=scanf("%1c%1c%1c%1c%1c%1c%1c",&word[0],&word[1],&word[2],&word[3],
&word[4],&word[5],&word[6]);
for(int i=0;i<LetterNum;i++){
if(word[i]!='a'||word[i]!='b'||word[i]!='c'||word[i]!='d'||word[i]!='r'){
printf("You did not speak in ABRACADABRA to me!\n");
return 0;
}
}

printf("Encrypted word: ");
char encrypted[LetterNum];
for(int i=0;i<LetterNum;i++){
for(int x=0;x<5;x++){
if(word[i]==natural[x])
encrypted[i]=key[x];
}
}
for(i=0;i<LetterNum;i++){
printf("%c",encrypted[i]);
}
printf("\n");


}

非常感谢!我是 C 语言新手,所以可能有一些我没有意识到的愚蠢错误...

最佳答案

不可达性在于,编译器已分析出带有 OR 的 if 语句始终为 true,因此将执行 return,因此其余部分无法访问。

if(word[i]!='a'||word[i]!='b'||word[i]!='c'||word[i]!='d'||word[i]!='r'){ // is always true

if(word[i]!='a'&&word[i]!='b'&&word[i]!='c'&&word[i]!='d'&&word[i]!='r'){ // is correct

(您是否使用调试器来单步执行程序,您自己已经找到了)

关于c - 无法访问代码并且无法读取所有输入字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47179301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com