| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
   
题目来自     ——>带你学C带你飞 S1E22 练习0进阶 
 
答案是这个代码,小甲鱼的解释是这样的: 
不难发现,每个中文字符在我们的系统中是占用 4 个字节的存储空间,并且都是负数。以此规律,我们只要检测一个字符对应的整型值是否为负数,如果是(中文字符),则将指针往后移动两个字节 
详细在图片里 
我不懂了,不应该是4个字节吗,怎么是两个字节。麻烦懂的帮我解释一下喔,最好画个图,本人比较笨QWQ 
 
 
#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; 
}
 |   
 
 
 
 |