所以,我现在已经在代码上工作了5个小时,而且逻辑看起来很好,程序似乎做了它的工作,唯一能让我烦恼的就是动态内存分配字符串。该问题未指定用户必须输入的初始字符串数。以下是我一直在尝试动态捕捉字符串的内容:
int t;
cin>>t //number of strings user wishes enter
char *s1[1000009]; //1000009 is the maximum number of digits each string can have
for(i=0;i<t;i++)
{
s1[i]=(char *)malloc(1000009)
cin>>s1[i];
}
不确定它是否正确。如果不是动态字符串,我可以通过这种方式存储2D字符数组。
感谢你, 拉夫
答案 0 :(得分:5)
使用字符串向量而不是使用malloc / new。
int t;
std::cin >> t;
std::vector<std::string> strings(t); //Create t strings
for(int i = 0; i < t; i++)
std::cin >> strings[i]; //Read into each string
答案 1 :(得分:1)
由于您将此问题标记为C ++,我会这样做:
std::vector<std::string> s1(1000009);
这就是全部 - 不需要使用malloc,也不需要关心破坏。 如果您使用的是C ++,请使用您可用的工具。
答案 2 :(得分:0)
我会这样做:
int i = 0;
char **s1;
s1 = (char **)malloc(t * sizeof(char *));
while (i < t)
{
s1[i] = (char *)malloc(1000009 * sizeof(char));
i++;
}
第一个malloc创建你的行。 第二个为每行填写alloc 100000009charactere