鱼C论坛

 找回密码
 立即注册
查看: 753|回复: 11

[已解决]超级无敌简单

[复制链接]
发表于 2020-11-26 09:28:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

#define MAX 1024

int main()
{
        char str[MAX];
        char *target = str;
        char ch;
        int length = 0;

        printf("请输入一个字符串:");
        fgets(str, MAX, stdin);

        while (1)
        {
                ch = *target++;
                if (ch == '\0')
                {
                        break;
                }
A:                if ((int)ch < 0)
                {
                        target += 2;
B:                }
                length++;
        }

        printf("您总共输入了 %d 个字符!\n", length - 1);

        return 0;
}

//哪个A到B是什么意思?是字符型中文转换成整型,就是个负数吗?一个汉字占几个字节?算几个字符?
最佳答案
2020-11-26 23:24:16
严凯 发表于 2020-11-26 14:34
额,我的A和B就是我私自加的,对代码是没有作用的,就是想告诉大家,我哪里不懂

有不明白的地方,用双斜杠在语句后面说明,不要在程序中添加任何字符、标记,这样会查找问题带很多麻烦
,我试了一下,分别输入数字、英文字母、键盘非字母字符及中文,只有 ch 接收中文时,ch < 0 ,可以说明:ch < 0 就是统计中文字符的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-26 10:40:58 | 显示全部楼层
本帖最后由 jackz007 于 2020-11-26 10:44 编辑

      在 GBK 编码方案中每个中文字符占用 2 个字节,两个字节的编码值都大于 127,如果保存字符的变量定义使用的是 char,那么,每个中文字节的编码值都一定是负值。建议用 unsigned char 来定义用于保存字符的变量类型,这样,就不会出现负值编码了。
        
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-26 10:41:16 | 显示全部楼层
A、B 在程序中没有什么作用,反而会报错
一个中文汉字占两个字节
此程序输入中文时,统计的字符数目是不正确的。我将键盘上的每一个键(除 Z 键外,对应的每一个五笔汉字输入进去),一共25个,可此程序统计只有16个汉字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-26 13:21:00 | 显示全部楼层
风过无痕1989 发表于 2020-11-26 10:41
A、B 在程序中没有什么作用,反而会报错
一个中文汉字占两个字节
此程序输入中文时,统计的字符数目是不 ...

但是这个是小甲鱼的题啊,他的答案就是这样S1E22里面动动手的一道题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-26 13:21:32 | 显示全部楼层
jackz007 发表于 2020-11-26 10:40
在 GBK 编码方案中每个中文字符占用 2 个字节,两个字节的编码值都大于 127,如果保存字符的变量定义 ...

谢谢,懂了,但是哪个A和B表示了什么

评分

参与人数 1荣誉 +5 贡献 +3 收起 理由
昨非 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-26 13:46:42 | 显示全部楼层
严凯 发表于 2020-11-26 13:21
但是这个是小甲鱼的题啊,他的答案就是这样S1E22里面动动手的一道题

我又去 S1E22 看了,没有看到他在哪个程序里,有 A 和 B
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-26 14:06:17 | 显示全部楼层
严凯 发表于 2020-11-26 13:21
谢谢,懂了,但是哪个A和B表示了什么

        A: 和 B: 应该是语句标号,是专门给 goto 语句当目标的,可是,代码中又找不到 goto 语句,那么,这两个标号就没有意义了。估计借用的是其它源代码文件,修改的时候忘记删除了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-26 14:34:58 | 显示全部楼层
jackz007 发表于 2020-11-26 14:06
A: 和 B: 应该是语句标号,是专门给 goto 语句当目标的,可是,代码中又找不到 goto 语句,那么 ...

额,我的A和B就是我私自加的,对代码是没有作用的,就是想告诉大家,我哪里不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-26 23:24:16 | 显示全部楼层    本楼为最佳答案   
严凯 发表于 2020-11-26 14:34
额,我的A和B就是我私自加的,对代码是没有作用的,就是想告诉大家,我哪里不懂

有不明白的地方,用双斜杠在语句后面说明,不要在程序中添加任何字符、标记,这样会查找问题带很多麻烦
,我试了一下,分别输入数字、英文字母、键盘非字母字符及中文,只有 ch 接收中文时,ch < 0 ,可以说明:ch < 0 就是统计中文字符的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-27 19:19:04 | 显示全部楼层
风过无痕1989 发表于 2020-11-26 23:24
有不明白的地方,用双斜杠在语句后面说明,不要在程序中添加任何字符、标记,这样会查找问题带很多麻烦
...

好的,大佬,他那个target+2,是不是因为一个汉族占两个字节
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-27 20:18:22 | 显示全部楼层
严凯 发表于 2020-11-27 19:19
好的,大佬,他那个target+2,是不是因为一个汉族占两个字节

应该是吧。
老实说,为了你的 A 和 B,我不得不去购买上题,费上了 10 个鱼币(虽然我不缺鱼币,但也没必要去消费这种非必要的消费)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-2 17:53:42 | 显示全部楼层
风过无痕1989 发表于 2020-11-27 20:18
应该是吧。
老实说,为了你的 A 和 B,我不得不去购买上题,费上了 10 个鱼币(虽然我不缺鱼币,但也没 ...

我的错我的错,,哈哈哈哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 21:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表