2016-05-15 2 views
-2
#include <stdio.h> 
int main() 
{ 
    char a[] = "My name is"; 
    char b[] = "kamran"; 

    printf("%s %s", a+b); 

    return(0); 

} 

我嘗試添加兩個字符串,但得到的錯誤「無效操作數爲二進制」如何添加兩個字符串?

+0

看起來你已經省略了錯誤信息的尾部。整個消息可能類似於「對二進制無效的操作數+」。 –

+0

您不需要添加兩個數組來一個接一個地打印它們。看到答案。如果您真的想將它們添加到第三個字符串中,最簡單的方法是使用標頭中聲明的函數。 ( - : – user3078414

+0

http://stackoverflow.com/questions/8465006/how-to-concatenate-2-strings-in-c –

回答

3

在這個表達式中

a+b 

陣列標誌符隱式轉換爲指針到串的第一字符。所以實際上你試圖添加兩個類型爲char *的指針。

從C標準(6.3.2.1左值,數組和功能指示器)

3除了當它是sizeof操作或一元& 操作者的操作數,或是字面使用的字符串爲了初始化一個數組,一個 表達式的類型爲'''的數組被轉換爲 表達式,該表達式的類型''指針指向類型'',指向數組對象的初始 元素並且不是左值。如果數組對象 具有寄存器存儲類,則行爲未定義。

但是沒有爲C和C++中的指針定義operator +

如果您確實想要添加兩個字符串,則操作的結果將是包含前兩個字符串的第三個字符串。

有兩種方法。要麼聲明第三個字符數組足夠大,以包含前兩個字符串。或者你需要爲結果字符串動態分配內存。

例如

#include <stdlib.h> 
#include <string.h> 
#include <stdio.h> 

int main(void) 
{ 
    char a[] = "My name is"; 
    char b[] = "kamran"; 
    char c[sizeof(a) + sizeof(b)]; 

    strcpy(c, a); 
    strcat(c, " "); 
    strcat(c, b); 

    puts(c); 

    char *d = malloc(sizeof(a) + sizeof(b)); 

    if ( d) 
    { 
     strcpy(d, a); 
     strcat(d, " "); 
     strcat(d, b); 

     puts(d); 
    } 

    free(d); 
} 

程序輸出是

My name is kamran 
My name is kamran 
+0

一個非常詳細的答案,我正在尋找一個特別的,這是我想要與我的程序,謝謝 –

+0

@ kamranhassan沒有。 ) –

6

您可以連接ba這樣的:

char a[18] = "My name is "; // a needs to be big enough 
char b[] = "kamran"; 

strcat(a, b); 

printf("%s", a); 

要使用strcat()您需要包括string.h

+2

請不要忘記'#include ' – user3078414

相關問題