S1E22 动动手第0题课后答疑
本帖最后由 weijun_zhang 于 2021-4-21 21:45 编辑老师的课后习题说汉字占4个字节,都是负数。
可是我运行了,只有3个字节,而且前面两个为负数,最后一个为0啊?啥情况? 为何老师的答案,检测到为负数,指针地址+2,而不是+4或者+3呢?
#include <stdio.h>
int main()
{
char str[]="中";
int length=0,i;
length = sizeof(str) / sizeof(str);
printf("length=%d\n",length);
printf("%d",length);
for(i=0;i<length;i++)
{
printf("str[%d]=%d\n",i,str);
}
return 0;
}
运行结果如下:
length=3
3str=-42
str=-48
str=0 最后的是 字符串结束符 '\0' 你倒是把你的运行结果贴出来呀,你这样一点说服力都没有
人造人 发表于 2021-4-21 21:43
你倒是把你的运行结果贴出来呀,你这样一点说服力都没有
你提醒的是,已更新,烦请帮忙解答下,感谢 weijun_zhang 发表于 2021-4-21 21:46
你提醒的是,已更新,烦请帮忙解答下,感谢
嗯,还真是输出了3
一个中文字符占多少个字节是和文件的编码有关的 人造人 发表于 2021-4-21 21:55
嗯,还真是输出了3
一个中文字符占多少个字节是和文件的编码有关的
什么意思?请问1.什么是文件的编码? 2.为何S=0,而不是负数?跟老师的说法及下发源代码22行不符 3.既然汉字是3个字符or4个字符,为何老师代码第24行是target+2? 懵了,盼复
#include <stdio.h>
#define MAX 1024
int main()
{
char str;
char *target = str;
char ch;
int length = 0;
printf("请输入一个字符串:");
fgets(str, MAX, stdin);
while (1)
{
ch = *target++;
if (ch == '\0')
{
break;
}
if ((int)ch < 0)
{
target += 2;
}
length++;
}
printf("您总共输入了 %d 个字符!\n", length - 1);
return 0;
} weijun_zhang 发表于 2021-4-21 22:23
什么意思?请问1.什么是文件的编码? 2.为何S=0,而不是负数?跟老师的说法及下发源代码22行不符...
https://www.so.com/s?q=%E6%96%87%E4%BB%B6%E7%BC%96%E7%A0%81&src=srp&fr=360chrome_zoned&psid=96363bf3fe62a7c8adcdd4194184dab4
页:
[1]