【发布时间】:2014-11-10 03:10:06
【问题描述】:
我在UVa's online judge 中做一个相对简单的字符串问题来练习字符串,因为我在 C 中一直很难使用它们。问题基本上是检查字符串 B 是否包含另一个字符串 A 如果你删除'clutter' 并连接剩余的字符,例如,如果 "ABC" 包含在 "AjdhfmajBsjhfhC" 中,在这种情况下是正确的。
所以,我的问题是如何有效地为我不知道其长度的字符串分配内存?我所做的是使字符串非常大char Mstring[100000],从输入中读取,然后使用strlen(Mstring) 将字符串复制到适当大小的字符数组中。类似的东西:
char Mstring[100000];
scanf("%s",Mstring);
int length = strlen(Mstring);
char input[length+1]={0};
for(int i = 0; i<length;i++){
input[i]=Mstring[i];
}
在 C 中是否有更好/标准的方法来做到这一点?我知道 C 对字符串的支持不是很好,如果在 C 中没有更好的方法,也许在 C++ 中?
【问题讨论】:
-
我应该添加c++标签吗?
-
仅当您使用 C++ 并接受仅适用于 C++ 的答案时。
-
听起来任务是让你自己弄清楚,而不是在网上问。
-
是的,那没关系,但我更喜欢在 C 中工作的答案,如果可能的话,也许可以在 C++ 中使用另一种方法,但我不想在同一篇文章中提出单独的问题这就是为什么我不确定添加 c++ 标签的原因,我想我会的。
-
char input[length + 1] = {0};.