2016-05-23 43 views
1

我想知道如何連接子串。串聯子串?

例如,如果我得到這個詞XYZ我想我的輸出爲xxyxyz

我試圖寫的用strncat函數我的代碼,基本上我有想提取子和拼接它進入輸出。

如何從用戶輸入生成的字符串中提取子字符串,並能夠將其輸入字符串格式爲C?

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

int main() 
{ 
char str[100]; 
int i; 

printf("Enter Word :"); 
scanf("%s",str); 

for(i=0;i<strlength(str);i++){ 
strncat(str(i),str(i++),i++) 
} 

printf("conc : %s" , str); 

return 0; 

} 
+1

'str(i)'是什麼? 'str'是一個數組,而不是一個函數。 – Barmar

+0

真的,但我似乎無法找到一個解決方法來操縱字符串 – EonTea

+0

使用方括號索引字符串 –

回答

2

您需要一個單獨的變量作爲結果字符串,而不是連接到與之相同的字符串。將其初始化爲空字符串,然後使用strncat將子串連接到它。

要獲取子字符串,請使用strncpy()

char input[100]; 
char output[5000] = ""; 
size_t i; 

printf("Enter word: "); 
scanf("%s", input); 

size_t len = strlen(input); 

for (i = 0; i < len; i++) { 
    strncat(output, input, i); 
} 

printf("conc: %s\n", output); 
+1

'scanf(「%99s」,輸入);' –

+0

非常感謝您的幫助,真的很有幫助! – EonTea

0

,我們可以以不同的方式串聯子

一種方式是像你這樣小的修改(通過動態分配內存和其他使用方式陣列)

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

int main() 
{ 
    char *str; 
    int i, len; 

    str = (char *) malloc(100); 
    printf("Enter word: "); 
    scanf("%s", str); 

    len = strlen(str); 

    for (i = 1; i <= len; i++) 
    { 
     strncat(str, str, i); 
    } 

    strcpy(str,str+len); 
    printf("conc: %s\n", str); 

return 0; 
} // main 

int main() 
{ 
    char str[100]   ={0}; 
    char ResultString[100] ={0}; 
    int i, len; 

    printf("Enter word: "); 
    scanf("%s", str); 

    len = strlen(str); 

    for (i = 1; i <= len; i++) 
    { 
     strncat(ResultString, str, i); 
    } 

    printf("conc: %s\n", ResultString); 

return 0; 
} // main 
+0

有趣的是,我是C中的全新人物,但我可以明確地體會到從更好,更經驗的人那裏解決C的方法。非常感謝您的幫助! – EonTea