关于#c++#的问题:vs2012输出中文乱码

控制台输出有乱码
不知道是什么问题
想知道解决方法
不知道是不是gets和printf一起用的原因

img

img

img

img

char str[max];
改为
static char str[max];

  • 这篇博客: 标准输入输出详解(C++)中的 标准输出(printf)的使用 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •       前面学习了cout,可以通过cout将数据输出到控制台上。

          printf也是将数据往控制台上输出的一个函数,使用这个函数,我们需要引入cstdio文件,即#include<cstdio>。下面我们来讲讲printf函数:

          1、printf()函数是一个格式化输出函数, 用户可以通过该命令向标准输出设备输出指定的格式信息。使用的方法是: printf("格式化字符串", 变量名)。

    #include<cstdio>
    int main()
    {
        int a=3;
        printf("a的值是%d",a);
        return 0;
    }

          2、直接输出想要打印在屏幕上的文字:

    printf("百度经验!\n");
    printf("今天天气不错!\n");

          3、输出整数,以固定长度输出整数:

    int a1=1;
    int a2=10;
    int a3=100;
    printf("The result is %d\n",a1);
    printf("The result is %3d\n",a1);
    printf("The result is %3d\n",a2);
    printf("The result is %3d\n",a3);

          其中的%d代表后面的变量,d表示整数,d前面的整数代表该整数输出时会占用多大的空间,一般用于对齐输出。

          4、输出小数,保留小数点后固定的位数:

    float a=2.01;
    printf("The result is %f.\n",a);
    printf("The result is %.3f.\n",a);
    double b=5.01;
    printf("The result is %lf.\n",b);
    printf("The result is %.3lf.\n",b);

          小数有两种表示方法,一种是float单精度,一种是double双精度,使用起来没有太大的差别,只是double的精度是float精度的两倍,在printf输出时f代表单精度,而lf代表双精度。另外,“.3f”和".3lf"中的点加整数代表需要保留几位小数。