2017-05-24 133 views
0

我有一個文件,cr.c如何添加兩個字符串

void main(int argCount, char **args) { 
    system("/usr/bin/javac " + args[1]); 
} 

當我嘗試編譯,它給了我一個錯誤:

cr.c: In function ‘main’: cr.c:6:30: error: invalid operands to binary + (have ‘char *’ and ‘char *’)      system("/usr/bin/javac " + args[1]);                              ^

我試圖用.更換+修復它,因爲我是在將字符串連接的一種方式PHP。這只是一個猜測。

我不知道爲什麼會發生這種情況。請解釋爲什麼會發生這種情況,並且如何修復它。我不想讓別人來判斷我要學什麼,而是要打印什麼。

謝謝!

+0

「+」運算符不適用於您想要或期望的字符串。 –

+0

我知道。 「這只是一個猜測」 – tylerr147

+1

研究字符串處理函數,例如'strcat',儘管你不能將參數連接到文字「/ usr/bin/javac」。但是你可以初始化一個具有足夠大小的數組來保存兩個字符串(和終止符)。 –

回答

3

您可能習慣了高級語言,您可以使用+號連接字符串。

在C中,你必須使用strcat

char buffer[100] = "Hello"; 
strcat(buffer, " World"); 
+0

需要導入/包含哪些庫? – tylerr147

+0

#include Meccano

+0

不會strncat更安全,特別是當字符串是用戶輸入。 – hetepeperfan

1

+運算符不會連接字符串。您可以撥打strcat將兩個字符串連接在一起。

+0

但是您首先應該確保目標字符串足夠大以容納新字符串 – FredK

0

連接兩個字符串:

char *buffer = malloc(strlen(stringOne) + strlen(stringTwo) + 1); 
if(!buffer) 
{ // then malloc failed 
    perror("malloc failed"); 
    exit(EXIT_FAILURE); 
} 

// implied else, malloc successful 

strcpy(buffer, stringOne); 
strcat(buffer, stringTwo); 
0

謝謝你的問題。 C是一種結構化語言,在這裏你不能使用「。」(成員運算符)或+(添加運算符),就像c#java cpp php或javascript一樣。 您可以簡單地使用字符串頭文件和預定義的函數使其成爲可能。