因此,我正在编写一个程序,该程序将用户定义数量的数组存储到用户定义大小的数组中,目前,我正在尝试打印输入的每个字符串,但不知道如何将先前的字符串存储到其他位置。例如,如果用户需要4个字符串,那么我只能打印出最后一个。 我的第一个想法是为字符串创建另一个数组,该数组随着我将用户输入的字符串放入其中而增长,但在如何实现这一点以及将字符串分离为更大的字符串中迷失了。 如何在末尾重复printf语句,以便打印出所有输入的字符串,而不仅仅是最后一个? 如何为给出的字符串创建空间,而不覆盖它们? 在输入下一个字符串之前,如何将字符串发送到内存中的其他位置,以及如何访问它? 这是到目前为止的代码 (正在进行的工作)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc,char *argv[]){
int i, length, amt;
char *ptr, *thetotalstring;
i=0;
printf("enter string amount: ");
scanf("%d",&amt);
for(;i<amt;i++){
printf("Enter the length of the string: ");
scanf("%d", &length); //length is defined
ptr = malloc(length/2*sizeof(char)); //allocate the space
printf("Please enter string %d: ", (i+1));
scanf("%s", ptr); //get the string
thetotalstring = realloc(ptr, amt*length*sizeof(char));
}
//allocate more
//space in a bigger string to hold other strings??
for(i=0;i<amt;i++){
printf("%s", thetotalstring);
}
return 0;
}
答案 0 :(得分:0)
您可以使用指针吗?
int *arrop[3];
示例
int *arrop[3];
int a = 10, b = 20, c = 50, i;
arrop[0] = &a;
arrop[1] = &b;
arrop[2] = &c;
for(i = 0; i < 3; i++)
{
printf("Current = %d\t Value = %d\n", arrop[i], *arrop[i]);
}
答案 1 :(得分:0)
最简单的方法是存储一个字符串数组,而不是尝试将它们全部放入一个大的字符串缓冲区中。 首先,您要分配数组:
char **str_array = malloc(amt * sizeof(char*));
然后,您将在循环内分配并填充数组的每个元素:
str_array[i] = malloc(length * sizeof(char));
fgets(str_array[i], length, stdin); //safer than scanf
最后,您将在最后一个循环中打印数组的每个元素:
printf("%s", str_array[i]);