lpx9393 发表于 2020-2-14 22:31:20

这段代码应该怎么改

本帖最后由 lpx9393 于 2020-2-15 08:24 编辑

#include <stdio.h>

int main()
{
      char str[] = "中";
      int length, i;

      length = sizeof(str) / sizeof(str);

      printf("length of str: %d\n", length);

      for (i = 0; i < length; i++)
      {
                printf("str[%d] = %d\n", i, str);
      }

      return 0;
}这段代码小甲鱼老师输出的字符是占四个字节,而我是显示三个字节?这是什么原因?#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;
}而这段代码,小甲鱼老师输出正常,而我不正常输出,请问我应该怎么改?谢谢!
请输入一个字符串:早上好晚上好再见
您总共输入了 5 个字符!

--------------------------------
Process exited after 20.98 seconds with return value 0
请按任意键继续. . .
上面是我的输出结果
希望各位老师详细解答下啊!!!我好懵
谢谢各位老师帮助我!!!

ba21 发表于 2020-2-14 23:09:08

不同的编码自然得到不同的结果
ansi utf-8 .....
不同的编译器使用的编码格式也不一样。

lpx9393 发表于 2020-2-14 23:14:30

ba21 发表于 2020-2-14 23:09
不同的编码自然得到不同的结果
ansi utf-8 .....
不同的编译器使用的编码格式也不一样。

那应该怎么改才能正确

ba21 发表于 2020-2-15 00:02:12

lpx9393 发表于 2020-2-14 23:14
那应该怎么改才能正确

我看你是没有看明白吧。
你用老师一样的环境不就一样了。
页: [1]
查看完整版本: 这段代码应该怎么改