C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了将字符复制到char指针数组时的堆栈转储大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
gcc 4.4.3 c89

我有以下源文件.@H_674_7@

但是,我在以下行获得堆栈转储:@H_674_7@

printf("dest: %d [ %s ]\n",i,dest[i]);

原因是如果无法从for循环中断.我已经在for循环中尝试了不同的条件,以便在打印之前尝试打破.@H_674_7@

i != NULL
i != '\0'
i != 0

但是,以上所有都无法奏效.我可以使用sizeof(srC)作为条件.但我只想知道为什么我使用当前方法获取此堆栈转储.@H_674_7@

当我使用gdb检查时,所有数组元素都已初始化为nul:@H_674_7@

(gdb) p dest
$8 = {0x0 <repeats 11 times>}

代码:@H_674_7@

void copy_characters()
{
    /* static character array */
    char src[] = "sourcefile";
    /* array of pointers to char */
    char *dest[sizeof(srC)] = {0};
    size_t i = 0;

    /* Display the source characters */
    for(i = 0; src[i] != '\0'; i++) {
        printf("src [ %c ]\n",src[i]);
    }

    /* Copy the characters */
    for(i = 0; i < sizeof(src); i++) {
        dest[i] = &src[i];
    }

    /* Display them */
    for(i = 0; dest[i] != '\0'; i++) {
        printf("dest: %d [ %s ]\n",dest[i]);
    }
}

非常感谢任何建议,@H_674_7@

解决方法

首先 – 我不确定你在这里做什么.但:

dest [i]是指向字符的指针.@H_674_7@

您应该测试dest [i]指向的值是否为null,如下所示:@H_674_7@

for(i = 0; *(dest[i]) != '\0'; i++) {

大佬总结

以上是大佬教程为你收集整理的将字符复制到char指针数组时的堆栈转储全部内容,希望文章能够帮你解决将字符复制到char指针数组时的堆栈转储所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。