2014-12-01 66 views
-1

我正在从函数返回一个字符。当我在屏幕上看到这些奇怪的符号时,一切正常。C++ char返回输出符号

#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之前和之后,所有输出都很好。然而,名字本身输出符号和块。

+1

'outStr = FirstName'只复制方向。使用'strcpy(outStr,FirstName)'。或者更好的是,使用'std :: string' – Noel 2014-12-01 19:51:13

+0

我不认为这是这个特定问题的重复;有问题的一行是'outStr = FirstName',这似乎是试图拷贝数组内容。 – cdhowie 2014-12-01 19:51:19

+1

1.函数返回后,'testfunc()中的'FirstName'数组无效。 2.'outStr = FirstName;'实际上没有用,它不会改变'main()'中声明的'char FirstName [10]'(提示,请尝试'strncpy()'而不是'='! – 2014-12-01 19:53:06

回答

3

outStr = FirstName实际上不复制字符串,它只是分配outStr参数变量指向内testfunc()FirstName阵列的所述第一元件; main()中的FirstName数组未被修改。

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