2012-07-15 60 views
0

我正在學習C ..來自C#背景我發現它大部分非常容易轉換爲..指針但是證明相當麻煩..我創建了一個小測試應用程序(請參閱下面)通過指針連接2個字符串。我得到這個錯誤:C:字符串通過指針級聯

error: invalid type argument of unary '*' (have 'int') 

我該如何解決這個問題?

void concatTest(); 

int main() 
{ 
    concatTest(); 

    system("PAUSE"); 
    return 0; 
} 

void concatTest() 
{ 
    char string1[20], string2[20], string3[40]; 
    char *ptr1, *ptr2, *ptr3; 
    ptr1 = &string1[0]; 
    ptr2 = &string2[0]; 
    ptr3 = &string3[0]; 
    int i; 

    printf("You need to enter 2 strings.. each of which is no more than 20 chars in length: \n"); 

    printf("Enter string #1: \n"); 
    scanf("%s", string1); 

    printf("Enter string #2: \n"); 
    scanf("%s", string2); 

    int len1 = strlen(string1); 
    int len2 = strlen(string2); 

    for (i = 0; i < len1; i++) 
    { 
     *ptr3[i] = *ptr1[i]; 
    } 
    for (i = len1; i < len1 + len2; i++) 
    { 
     *ptr3[i] = *ptr2[i]; 
    } 
    //TODO: show concatenated string on console 
} 
+0

您應該在這裏使用'scanf(「%20s」,string1)''。 – 2012-07-15 23:39:27

+0

你的第二個循環是不正確的,你需要從第二個字符串的開頭開始複製(但仍然追加到最後一個字符串的末尾)。 – Neil 2012-07-15 23:50:08

回答

2

ptr1[i]已經解除對數組的引用。也不需要使用*

[但是,即使您解決了這個問題,您的代碼仍然存在問題;您沒有考慮到空終止符。]

+0

謝謝Oli提供了這樣一個快速簡潔的答案。我有另一個關於null終止字符串在這裏:http://stackoverflow.com/questions/11496624/c-string-concatentation-null-terminated-strings – Matt 2012-07-15 23:53:49

-2
the name of array as a point 
ptr1 = string1; ptr1 point at the array string1,so ptr1[i] is just like string1[i] 

ptr1 = string1; 
ptr2 = string2; 
ptr3 = string3; 
+0

添加一些文本可能會幫助我們理解你想說什麼! – Swanand 2012-07-16 05:23:39

+0

非常差的評論,莫爾具體和你的評論清楚 – 2012-07-16 12:48:35