gpt4 book ai didi

c - 在 C 中获取段错误

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

所以我有以下代码:

#include <stdio.h>
#include <ctype.h>

int main(void) {

char ch;

printf("Enter Phone Number: ");
ch = getchar();

while (ch != '\n') {
switch(ch) {
case 'A':
case 'B':
case 'C':
printf('2');
break;
case 'D':
case 'E':
case 'F':
printf('3');
break;
case 'G':
case 'H':
case 'I':
printf('4');
break;
case 'J':
case 'K':
case 'L':
printf('5');
break;
case 'M':
case 'N':
case 'O':
printf('6');
break;
case 'P':
case 'R':
case 'S':
printf('7');
break;
case 'T':
case 'U':
case 'V':
printf('8');
break;
case 'W':
case 'X':
case 'Y':
printf('9');
break;
default:
printf('%c', ch);
break;
}

ch = getchar();
}
}

目标是:

input: CALLATT
output: 2255288

input: 1-800-COL-LECT
output: 1-800-265-5328

当我运行程序时:

Enter Phone Number: CALLATT
Segmentation fault: 11

我做错了什么?

最佳答案

您使用单引号来分隔传递给 printf 的字符串。您需要使用双引号。

所以改变这个:

printf('%c', ch);

对此:

printf("%c", (char)ch);

在对 printf 的其他调用中也类似。

此外,您需要将 ch 声明为 int 才能检测 EOF 条件:

while ((ch != EOF) && (ch != '\n') {

关于c - 在 C 中获取段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38251540/

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