2014-10-02 18 views
1

IM困惑,在我的編碼C++ 請幫助我..如何加入的strcpy在C++

#include <conio.h> 
#include <string.h> 
#include <iostream.h> 
main() 
{ 
    char h1[80]; 
    char h2[80]; 
    char move[80]; 
    clrscr(); 
    cout<<"Character 1 = "; 
    gets(h1); 
    cout<<"Character 2 = "; 
    gets(h2); 
    strcpy(move, h1); 
    cout<<"Result = "<<move; 
    getch(); 
} 

我要像

Move = h1+h2; 
+7

使用'的std :: string'對於'h1'和'move',然後'move = h1 + h2;'。 – juanchopanza 2014-10-02 06:35:03

+6

你使用什麼編譯器?請不要說它是古老的Turbo C++。 – PaulMcKenzie 2014-10-02 06:35:37

+8

永遠不會使用'gets()'。這是一個安全漏洞。使用'fgets()'或其他東西。 – 2014-10-02 06:36:49

回答

3
#include <string> 
#include <iostream> 
main() 
{ 
    std::string h1; 
    std::string h2; 
    std::string move; 
    std::cout << "Character 1 = "; 
    std::cin >> h1; 
    std::cout << "Character 2 = "; 
    std::cin >> h2; 
    move = h1 +h2; 
    std::cout << "Result = " << move; 
} 
+0

工作,謝謝TNA – 2014-10-06 03:03:23

4

您應該使用的strcat連接字符串輸出/結果程序

strcpy(move, h1); 
strcat(move, h2); 
cout<<"Result = "<<move; 
+3

我想指出這可能會導致UB,因爲'h1','h2'和'move'都是相同的大小,所以如果例如'h1'的長度爲30,'h2'的長度爲30我們會在'move'之外寫作,但是OP使用'gets',所以緩衝區溢出似乎不是問題。 – IllusiveBrian 2014-10-02 06:44:50

3
#include <conio.h> 
#include <string> 
#include <iostream> 

main() 
{ 
    std::string h1; 
    std::string h2; 
    std::string move; 
    clrscr(); 
    std::cout << "Character 1 = "; 
    std::getline(std::cin, h1); 
    std::cout << "Character 2 = "; 
    std::getline(std::cin, h2); 
    move = h1 + h2; 
    std::cout << "Result = " << move; 
    getch(); 
} 
1

使用strcat(move,h2);添加的moveh2可變

strcpy(move, h1); 
strcat(move,h2); // make sure `move` have enough space to concatenate `h1` and `h2` 
0

首先,含量這將是更好地使用C函數fgets,而不是C function gets因爲最後是不安全的,可以覆蓋內存..

例如

fgets(h1, 80, stdin); 

但是無論如何,使用支架會更好ard C++函數getline

如果你想要得到的結果作爲移動= H1 + H2,那麼你應該檢查移動可容納字符串連接h1 + h2

所以,你可以寫

if (strlen(h1) + strlen(h2) < 80) 
{ 
    strcat(strcpy(move, h1), h2); 
    cout<<"Result = "<<move; 
} 
+1

問題是C++ - 這是C的答案 – 2014-10-02 06:50:06

+1

@Ed治癒這是相對於他的代碼最有用的答案。 – 2014-10-02 06:55:54

+0

@EdHeal代碼是C除了使用cout(甚至沒有一個std ::在其中) – 2014-10-02 07:08:23