递增指针时C错误中的2D动态分配

用户名

我想动态分配一个字符串数组,该程序应该询问用户字符,并将它们收集在数组的第一个字符串中,直到输入字母“ q”,然后程序开始将字符添加到第二行,依此类推。 。

当我打印字符存储位置时,尽管每个字符只增加一次,但似乎每个字符占用两个存储单元而不是一个。

这是我程序的源代码

#include <stdio.h>

void main()
{

    char** txt;
    char* baseAddress;

    txt = (char **)malloc(5*sizeof(char*));
    *txt = (char *)malloc(20*sizeof(char));

    baseAddress = *txt;


    while (*(*txt) != 'q')
    {
       (*txt)++;
       scanf("%c", (*txt));
       printf("%p\r\n", (*txt));
    } 

    *txt = '\0';

    printf("%p", baseAddress);

    free(baseAddress);
    free(txt);
}

输出是这样的

>j
>0x9e12021
>0x9e12022
>s
>0x9e12023
>0x9e12024
>

我认为指针可能有问题。我该如何完成这项工作?对不起,英语不好

Lidong Guo

您编写的代码有什么用途:

+----------------------------------------------+
|     +--------------------------------------+ |  
|  txt|*txt  |*txt+1 |*txt+2 |*txt+3 |*txt+4 | |
|     +--------------------------------------+ |
|       ^        ^    no memory alloc   ^      |
|       |        |_______not used_______|      |
|     +----+                                   |
|*txt |____|    <------------------------------+---you never give a value here,                            
| +1  |____|    <--j                           |
| +2  |____|    <-- '\n'                       |
| +3  |____|    <--s                           |
| +4  |____|    <-- '\n'                       |
|  .    .                                      |
|  .    .                                      |
|  .   ____                                    |
| +19 |____|                                   |
+----------------------------------------------+

因此,您需要:

  1. 重新编写您的while循环并处理 '\n'
  2. 当用户键入q时,分配新的字符串内存并收集用户输入。

建议:

在你的第一个字符串中

使用txt[0]代替*txt,使用txt[0][i] and i++代替**txt and (*txt)++

希望能帮上忙。:-)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

指向C ++中动态分配的2D数组中的一行的指针

来自分类Dev

函数和返回指针中2D数组的C动态分配

来自分类Dev

动态分配2D数组时C分段错误

来自分类Dev

在C中动态分配2D数组

来自分类Dev

在C中动态分配2D数组

来自分类Dev

在C中填充动态分配的2D char数组时的奇怪行为

来自分类Dev

动态分配的2D矩阵的分割错误

来自分类Dev

尝试动态分配2d char数组时出现分段错误

来自分类Dev

c:动态分配2d char数组时出现问题?

来自分类Dev

使用C中的动态分配创建2D字符串数组

来自分类Dev

按C中的第一列对动态分配的2D数组进行排序

来自分类Dev

如何在C ++中动态分配2D数组?

来自分类Dev

从动态分配的2D数组指针获取行

来自分类Dev

从动态分配的2D数组指针获取行

来自分类Dev

C ++中的动态分配错误

来自分类Dev

动态分配的2D数组运行时错误

来自分类Dev

C中的FILE指针是动态分配的吗?

来自分类Dev

动态分配2D字符串数组

来自分类Dev

调整2D动态分配的大小

来自分类Dev

将动态分配的2D阵列从主机复制到CUDA中的设备

来自分类Dev

动态分配文件中的2D字符串数组

来自分类Dev

从结构中的2D数组释放动态分配的内存

来自分类Dev

从2D动态分配的数组中获取列总和?

来自分类Dev

c ++ 11使用std :: fill填充2D动态分配的数组

来自分类Dev

在结构中动态分配**指针

来自分类Dev

C 指针和动态分配

来自分类Dev

尝试在C中创建动态分配的字符串数组时出现分段错误

来自分类Dev

shell C 中的动态分配和分段错误

来自分类Dev

为什么在C ++中声明动态2D数组时使用指针指向?