我对 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. }
提前非常感谢
最佳答案
首先,为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];
}
关于c - 我的 C 代码有什么问题? C代码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51009589/