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

标签 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. }

提前非常感谢

最佳答案

首先,为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/

相关文章:

c++ - OpenSSL/c/c++ - EC secp256k1 key 生成

c - 将字符串输入到结构体数组的 char 指针成员

c - 交叉格式说明符的 printf 输出

java - 在 native c/c++ 代码中发生崩溃时,JVM 中的设置忽略 JRE 错误消息?

c - 警告 : Comparison between pointer and integer in while loop

c - 在哪里可以找到使用 zlib 解压缩的示例?

c - 带 float 的变量在 C 中保持为零

c++ - 用 C 和 C++ 编写代码的不同值(value)观

c - 如何在结构中保存 ncurses 窗口?

c - 为什么此代码中的整数不递增?