Visual Studio-怪异的字符输出

Visual Studio - Weird Characters output

本文关键字:字符 输出 Studio- Visual      更新时间:2023-10-16

我正在Visual Studio 2013中运行此程序,但它正在打印奇怪的字符。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
    char first[11];
    char second[11];
}INFO;
char * str1;
char * str2;
int num;
void bar_function(INFO info)
{
    str1 = info.first;
    str2 = info.second;
    num = 100;
    printf("%s %sn", str1, str2);
}
void print()
{
    printf("%s %sn", str1, str2);
    printf("%dn", num);
}
int main(void)
{
    INFO info;
    strcpy(info.first, "Hello ");
    strcpy(info.second, "World!");
    bar_function(info);
    print();
    system("pause");
    return 0;
}

in bar_function 函数,我将值分配给全局变量并打印字符串。它正在打印正确的输出。但是,当我在 print 函数中打印相同的字符串时,它是在 Visual Studio 2013 中打印怪异字符。同时, num 变量是在 print 函数中打印正确的值。这是相同的输出。

你好世界!

╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠─²f╠╠╠╠╠─²f

100

另外,同一程序在代码框架中正常工作并打印正确的值。

我无法理解Visual Studio中的这种怪异行为。有人可以解释一下。

bar_function中,变量 info是a local variable ,因此,当功能返回时,它将出现在范围并停止。

这意味着阵列的指针将变得无效,而将它们提出将导致不确定的行为

由于您要编程C ,因此您应该将std::string用于字符串,而不是指针或数组。当然,尽可能避免全局变量。