#include <stdio.h>
int main()
{
char a[] = "My name is";
char b[] = "kamran";
printf("%s %s", a+b);
return(0);
}
我嘗試添加兩個字符串,但得到的錯誤「無效操作數爲二進制」如何添加兩個字符串?
#include <stdio.h>
int main()
{
char a[] = "My name is";
char b[] = "kamran";
printf("%s %s", a+b);
return(0);
}
我嘗試添加兩個字符串,但得到的錯誤「無效操作數爲二進制」如何添加兩個字符串?
在這個表達式中
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
一個非常詳細的答案,我正在尋找一個特別的,這是我想要與我的程序,謝謝 –
@ kamranhassan沒有。 ) –
您可以連接b
到a
這樣的:
char a[18] = "My name is "; // a needs to be big enough
char b[] = "kamran";
strcat(a, b);
printf("%s", a);
要使用strcat()
您需要包括string.h
。
請不要忘記'#include
看起來你已經省略了錯誤信息的尾部。整個消息可能類似於「對二進制無效的操作數+」。 –
您不需要添加兩個數組來一個接一個地打印它們。看到答案。如果您真的想將它們添加到第三個字符串中,最簡單的方法是使用標頭中聲明的函數。 ( - : –
user3078414
http://stackoverflow.com/questions/8465006/how-to-concatenate-2-strings-in-c –