【发布时间】:2014-10-04 17:58:33
【问题描述】:
我正在寻找使用 C 中的 for 循环处理通过命令行参数传递的字符串。我想知道这是否是正确的方法。
main(int argc, char * argv[])
{
char * somestring;
somestring = malloc( (strlen(argv[1]) + 1) * sizeof(char) );
somestring = argv[1];
...
}
如果我这样做了,C 是否会分配适当的内存:
char * somestring;
somestring = argv[1];
【问题讨论】:
-
为什么不使用
strcpy?如果你不要求,为什么 C 会为你分配内存? -
视情况而定。您希望能够修改
somestring并保持原始参数不变吗?您只想使用(不修改)参数吗? -
我只想用 for 循环逐个字符地处理它。
-
如果你只是想处理argv[1]元素,可以立即进行,不需要先复制。仅当您想更改它时,才建议进行复制(strcat,甚至更简单:strdup() - 这是 malloc 和的副本)
-
malloc在堆上创建空间来存储它。strcpy会将该字符串复制到您分配的位置