注册 登录
编程论坛 C++教室

帮忙看看为什么会乱码呢

hudada 发布于 2018-05-20 13:03, 1358 次点击
#include <stdio.h>
#include <windows.h>
main()
{
   char str[400]="社会主义核心价值观:富强 民主 文明 和谐 自由 平等 公正 法治 爱国 敬业 诚信 友善";
   int i,j;   
   while(1)
   for(i=0;i<strlen(str);i++)
   {
     system("cls");
       for(j=i;j<strlen(str);j++)
       {
          printf("%c",str[j]);
       }
       Sleep(100);
       printf("\n");
   }
}
6 回复
#2
ehszt2018-05-20 17:10
汉字占两个字符
#include <stdio.h>
#include <windows.h>
main()
{
   char str[400]="社会主义核心价值观:富强 民主 文明 和谐 自由 平等 公正 法治 爱国 敬业 诚信 友善";
   int i,j;
   while(1)   
   for(i=0;i<strlen(str);)
   {
     
     system("cls");
       for(j=i;j<strlen(str);)
       {
          if(str[j]==' ')
          {
              printf(" ");j++;
          }
          else
          {
              printf("%c%c",str[j],str[j+1]);j+=2;
          }
         
       }
       if(str[i]==' ')i++;
       else i+=2;
       Sleep(300);
       printf("\n");
   }
}
#3
hudada2018-05-20 18:41
回复 2楼 ehszt
这样改了以后,后面的程序可以给我解释一下吗
#4
ehszt2018-05-20 19:10
回复 3楼 hudada
j遇到空格输出空格跳一位,遇到汉字,输出汉字跳过两位
i遇到空格跳过一位,遇到非空格(汉字),跳过两位
就这样
#5
hudada2018-05-21 02:00
回复 4楼 ehszt
作为刚入门的大白菜真是太感谢您啦
#6
hudada2018-05-21 11:37
回复 4楼 ehszt
printf("%c%c",str[j],str[j+1]);
              j+=2;
为什么这一步要输出两个字符呢
#7
ehszt2018-05-21 12:58
一个汉字占两个字符,,输出一个字符其实只输出了"半个汉字"所以就是乱码。
1