鱼C论坛

 找回密码
 立即注册
查看: 1102|回复: 2

[已解决]S1E22,统计字符串个数(含中文),请问为什么输入中文后结果就不准确了

[复制链接]
发表于 2021-3-8 21:54:40 | 显示全部楼层 |阅读模式

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

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

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;
                }
                if((int)ch<0)
                {
                        target+=2;
                }
                length++;
        }
        
        printf("你总共输入了%d个字符\n",length-1);
        return 0;
        
}
最佳答案
2021-3-8 22:19:37
#include<stdio.h>
#define MAX 1024

int main(void)
{
        char ch , str[MAX] , * target                 ;
        int length                                    ;
        printf("请输入一个字符串:")                  ;
        fgets(str , MAX , stdin)                      ;
        for(length = 0 , target = str ; * target ; target ++ , length ++) {
                if(* target < 0) target ++            ; // windows 系统,每个汉字占用 2 个字节
        }
        printf("你总共输入了%d个字符\n" , length - 1) ; // length - 1 为了减掉字符串末尾的换行符 '\n'
}
屏幕截图 2021-03-08 215401.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-8 22:03:39 | 显示全部楼层
                if((int)ch<0)
                {
                        target+=2;   //改成 target ++; 或 target+=1;
                }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-8 22:19:37 | 显示全部楼层    本楼为最佳答案   
#include<stdio.h>
#define MAX 1024

int main(void)
{
        char ch , str[MAX] , * target                 ;
        int length                                    ;
        printf("请输入一个字符串:")                  ;
        fgets(str , MAX , stdin)                      ;
        for(length = 0 , target = str ; * target ; target ++ , length ++) {
                if(* target < 0) target ++            ; // windows 系统,每个汉字占用 2 个字节
        }
        printf("你总共输入了%d个字符\n" , length - 1) ; // length - 1 为了减掉字符串末尾的换行符 '\n'
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 09:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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