【发布时间】:2020-09-10 00:30:40
【问题描述】:
我对 C 非常陌生(使用 C 已经 2 天了),过去 30 个小时我一直在学习教程点和一些随机的 youtube 视频,但对于我的一生,我不知道如何在我在命令行中给出的字符串上加上一个名字。
所以我有一个文件filename.c 然后三个参数是
./filename.c F22 G2
我知道argv 中的第二个参数,即argv[1] 包含字符串F22,而argv[2] 包含G2。我不想将这两个字符串重命名为str1 和str2。
当我这样做并尝试打印 str1 时,我得到了很多奇怪的字符,而不是 F22。我在搞砸什么?请参阅下面的代码。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char* argv[])
{
char* str1[] = {argv[1]};
char* str2[] = {argv[2]};
printf("%s\n", str1);
return 0;
}
感谢任何帮助。
【问题讨论】:
-
试试
const char *str1 = argv[1];和const char *str2 = argv[2];但首先,最好始终检查argc以确保它们存在。 -
char* str[1]有点像二维字符数组,看来你需要一维(字符串),所以使用char* str = argv[i] -
如果构建时带有详细警告,那么编译器应该会抱怨
printf调用,其中参数类型与格式说明符不匹配。 -
我把
const放在那里是因为最好不要尝试覆盖传递的字符串。 -
@anastaciu 确保您也可以承担缓冲区溢出的风险。最好不要这样做。