2014-11-23 22 views
-1

我試圖從一個字符串中讀取兩個連續字符並將兩個字符傳遞給另一個字符串。代碼如下,但它給我分段錯誤!我究竟做錯了什麼?如何從一個字符串中一次讀取兩個字符並將其複製到另一個字符串

char *st = malloc(16*sizeof(char)); 
char *string = "purpleredblue"; 
int i; 
int x=0; 

while(x<=16) 
{ 
    for(i=x;i<=x+2;i++) 
    { 
     *st++=*string++; //copies content from string to st 
    } 
    x+=2; 
} 

printf("%s\n",st); 
+0

a)'free()'不是可選的。 b)你在內循環中增加st和string三次,並且整個循環因爲外循環而無限運行。沒有那麼多字符。即使x'= 2處於正確的位置,它也不會奏效(24而不是14)。c)描述你真正想要更詳細的內容。 – deviantfan 2014-11-23 22:13:28

+1

爲什麼你不能使用'memcpy'?爲什麼你要把16個字節複製到一個你明確分配爲15個字節的空間中,從一個只有14個字節長的空間中分配? – 2014-11-23 22:20:49

+0

謝謝你的回答。我真正想要的是,這個程序需要string =「purplerebblue」,然後傳遞「pu」給st。然後,隨着循環繼續,它通過「rp」,然後「le」等,直到字符串的結尾 – ninjacow55 2014-11-23 22:22:38

回答

0

您的代碼是完全錯誤的。這可能有所幫助:

char *buffer = (char*)malloc(16 * sizeof(char)); 
char *source = "purpleredblue"; 

char *dst = buffer; 
char *src = source; 
char *end = source + strlen(source); 

while (src <= end) 
{ 
    strncpy(dst, src, 2); 

    dst += 2; 
    src += 2; 
} 

printf("%s", buffer); 
+0

有人必須恨我-1。 – rullof 2014-11-23 22:44:56

+0

我想沒有指出錯誤(s)做了... – usr2564301 2014-11-23 22:58:45

相關問題