gpt4 book ai didi

c - Ascii 字符编码问题

转载 作者:太空宇宙 更新时间:2023-11-04 02:03:22 25 4
gpt4 key购买 nike

#include <stdio.h>
int main()
{
char line[80];
int count;
// read the line of charecter
printf("Enter the line of text below: \n");
scanf("%[ˆ\n]",line);
// encode each individual charecter and display them
for(count = 0; line[count]!= '\0'; ++ count){
if(((line[count]>='0')&& (line [count]<= '9')) ||
((line[count]>= 'A')&& (line[count]<='Z')) ||
((line[count]>= 'a')&& (line[count]<='z')))
putchar(line[count]+1);
else if (line[count]=='9')putchar('0');
else if (line [count]== 'A')putchar('Z');
else if (line [count]== 'a') putchar('z');
else putchar('.');
}
}

上面代码中的问题是转换编码。每当我编译代码时,编译器会自动转换编码,然后我无法获得所需的输出。我的目标输出应该是这样的:

enter the string
Hello World 456
Output
Ifmmp.uif.tusjof

对于每个字母,它由第二个字母替换,空格由“.”替换。

最佳答案

这是可疑的:

scanf("%[ˆ\n]",line);

应该是:

scanf("%79[^\n]",line);

您的版本有一个多字节字符,看起来有点像 ^,而不是 ^。这会导致您的扫描出现故障。您的症状听起来好像输入的文本实际上是多字节字符。

顺便说一句,您可以使用 isalnum( (unsigned char)line[count] ) 使您的代码更易于阅读。该测试将取代您的 a-z、A-Z、0-9 测试。

关于c - Ascii 字符编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23726345/

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