【问题标题】:C++ char return outputting symbolsC++ char 返回输出符号
【发布时间】:2014-12-01 19:46:44
【问题描述】:

我正在努力从函数中返回一个字符。当我在屏幕上看到这些奇怪的符号时,一切正常。

#include <iostream>

void testfunc(char* outStr);

int main()
{
  char FirstName[10];
  testfunc(FirstName);
  std::cout << "So far so good.";
  std::cout << std::endl;
  std::cout << FirstName;
  std::cout << std::endl;
  std::cout << "It worked!";
  std::cout << std::endl;
  system("pause");
  return 0;
}

void testfunc(char* outStr)
{
  char FirstName[10];
  std::cin >> FirstName; 
  outStr = FirstName;
}

我有问题的图片,但似乎无法发布任何内容。输出看起来像随机块,后跟数字和符号。这不是地址。它确实可以很好地编译和运行程序。 cout 在 FirstName 之前和之后,所有输出都很好。然而,FirstName 本身会输出符号和块。

【问题讨论】:

  • outStr = FirstName 只复制方向。使用strcpy(outStr, FirstName)。或者更好的是,使用std::string
  • 我不认为这是该特定问题的重复;违规行是outStr = FirstName,这似乎是试图复制数组内容。
  • 1.只要函数返回,testfunc() 中的 FirstName 数组就会失效。 2.outStr = FirstName;实际上没用,它不会改变main()中声明的char FirstName[10];(提示,尝试strncpy()而不是=!)

标签: c++ function char


【解决方案1】:

outStr = FirstName实际上并没有复制字符串,它只是将outStr参数变量赋值为指向testfunc()FirstName数组的第一个元素; main() 中的 FirstName 数组没有被修改。

要么使用strcpy() 来复制字符串,要么(更好)使用std::string 而不是字符数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-23
    • 1970-01-01
    • 2022-01-22
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多