我的C代码有什么问题? C代码错误

时间:2018-06-24 11:42:47

标签: c

我对C编程非常陌生。有人可以告诉我此代码有什么问题吗,我正在尝试运行此代码。

int main(void) 
{ char source[10]; 
char *dest; size_t i; 
strcpy(source, "0123456789"); 
dest = malloc(strlen(source)); 
for (i = 1; i <= 11; i++) { 
dest[i] = source [i]; 

} 

dest[i] = '\0'; 
printf("dest = %s", dest); return 0; 13. }

非常感谢

1 个答案:

答案 0 :(得分:2)

首先,为source分配足够的内存以容纳0123456789。并且此dest[i] = '\0';会导致不确定的行为,因为您在此处尝试访问(dest[10])您未分配的内容。因此,为dest分配足够的内存以最后存储'\0'。对于例如

dest = malloc(strlen(source) + 1);/* +1 is for \0 char as strlen(source) doesn't include \0 */

第二,不要认为source[0]是整数零0,它是零字符,即'0'(ascii-48)。因此,您无需从i=1开始旋转,从i=0一直旋转到'\0'

for (i = 1; i <= 11; i++) { /* array index starts from 0 */
      dest[i] = source [i]; 
} 

应该是

for (i = 0;source[i]; i++) { /* when \0 encounters, loop terminates */
       dest[i] = source [i];
}