gpt4 book ai didi

c - 如果我不知道字符序列的长度,如何将 "string"读取为多个字符?

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

抱歉,如果标题有点令人困惑,我会尽力在这里更好地解释。所以基本上我正在尝试编写一个程序,其中用户以字母形式输入电话号码,然后将其翻译为数字形式。像这样:

Enter phone number: CALLATT
22555288

其中2=ABC3=DEF4=GHI5=JKL6=MNO7=PRS8=TUV9=WXY

此外,如果输入的电话号码包含非字母字符,则应保留原样。这意味着:

Enter phone number: 1-800-COL-LECT
1-800-265-5328

现在,我知道使用字符串和数组可以很容易地解决这个问题,但我不应该在这个练习中使用它们。我写了这段代码:

#include <stdio.h>

int main() {
char two = '2', three = '3', four = '4', five = '5', six = '6',
seven = '7', eight = '8', nine = '9';
char num;

printf("Enter a phone number: ");

do {
num = getchar();
if(num == 'A' || num == 'B' || num == 'C'){
num = two;
}
else if(num == 'D' || num == 'E' || num == 'F'){
num = three;
}
else if(num == 'G' || num == 'H' || num == 'I'){
num = four;
}
else if(num == 'J' || num == 'K' || num == 'L'){
num = five;
}
else if(num == 'M' || num == 'N' || num == 'O'){
num = six;
}
else if(num == 'P' || num == 'R' || num == 'S'){
num = seven;
}
else if(num == 'T' || num == 'U' || num == 'V'){
num = eight;
}
else if(num == 'W' || num == 'X' || num == 'Y'){
num = nine;
}
printf("%c", num);
}while(getchar() != '\n');

return 0;
}

这显然不起作用。我的意思是,如果用户输入单个字符,它就可以正常工作,但如果输入由多个字符组成,则它就不行了。我无法真正理解这个问题...我知道我的代码为什么以及哪里错误,但我无法真正找到有效的解决方案来解决问题而不使用数组。

有什么帮助吗?非常感谢:)

最佳答案

尝试

    int num = getchar();
do {

/* your if / else / if train */
printf("%c", num);

} while ((num = getchar()) != '\n'); // assign and compare

关于c - 如果我不知道字符序列的长度,如何将 "string"读取为多个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53318246/

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