好吧我知道malloc
或calloc
可用于动态分配,但作为CI的新手不知道如何使用我分配用于输入多个输入的内存,如TC ++示例我们有这个代码
#include <stdio.h>
#include <string.h>
#include <alloc.h>
#include <process.h>
int main(void)
{
char *str;
/* allocate memory for string */
if ((str = (char *) malloc(10)) == NULL)
{
printf("Not enough memory to allocate buffer\n");
exit(1); /* terminate program if out of memory */
}
/* copy "Hello" into string */
strcpy(str, "Hello");
/* display string */
printf("String is %s\n", str);
/* free memory */
free(str);
return 0;
}
在这样的代码中,我们将Hello放到我们现在分配的内存中,这应该给我们留下4个字符空间,我们应该做些什么来向这些空间添加数据。
当用户被问及输入数量时,我想实现这个想法,他说10或100然后程序输入数据并存储它们并将数据打印到屏幕上。
答案 0 :(得分:1)
您正在寻找“指针算术”
在本例中,您将分配10个字节的内存,并将第一个字节的地址存储在指针str
中。
然后将字符串"hello"
复制到此内存中,这样就可以使用4个字节(因为"hello"
是5个字节+字符串终止字符\0
的一个字节)。
如果要在剩余的4个字节中存储某些内容,可以使用指针算法计算内存地址。
例如,如果要访问str
中的第6个字节,则执行str+5
。简单。
因此,为了扩展您的示例,您可以执行以下操作:
strcpy(str, "Hello");
strcpy(str+5, " man");
,printf("String is %s\n", str);
的输出为"Hello man"
。
答案 1 :(得分:0)
如果您想要附加到malloc
ed字符串,请使用strcat
str = malloc(20);
...
/* copy "Hello" into string */
strcpy(str, "Hello");
strcat(str, ", world!");
/* display string */
printf("String is %s\n", str); /* will print 'Hello, world!' */