Visual Studio-怪异的字符输出
Visual Studio - Weird Characters output
我正在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
用于字符串,而不是指针或数组。当然,尽可能避免全局变量。
相关文章:
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 字符的输入/输出操作
- 如何读取单个字符并在输入两个字符序列时输出? 使用 while 循环和C++
- C++输出奇怪的字符而不是数字 (Windows)
- 如何存储 unicode 字符并将其输出到文件?
- C++中附加的字符*的奇怪输出
- 来自无符号字符缓冲区的虚拟输出
- 将未签名的字符写入输出文件
- 在大小为 10 的 char 数组中输入超过 10 个字符的字符串并输出时,它会显示整个数组而不是前 10 个数组.为什
- 如何在C++中正确地将我的语言字符输出到HTML文件中
- x86 上的指针大小和奇怪的字符输出
- 如何修复C++中的随机字符输出?
- Visual Studio-怪异的字符输出
- 需要我当前的字符输出,这是它在C++中的整数值
- 宽字符输出结果
- 将字符输出随机化为文本文件
- C++和printf-奇怪的字符输出
- 显示无符号字符*和有符号字符*输出的结果是否完全相同
- 下一个回文 .奇怪的字符输出
- 不要将宽字符输出到命令提示符