我正在尝试编写一些带有两个命令行参数(一个单词和一个字母)的东西,并从单词中删除该字母的所有实例。例如,如果我传递Hello和e,则Hllo应该是结果字符串。
我正在尝试使用指针来做到这一点,并减少不必要的局部变量以提高效率。编译时,我收到明显的不兼容警告,并且我知道它与我的指针有关。如果我使用局部变量并将其传递,那么一切都会完美无缺-因此,我对指针的理解显然是有缺陷的。
任何指针(无双关语)将不胜感激!
decimal.Decimal
编辑:将float
添加到我的数据类型后,我收到以下警告:
tuple
编辑:这是警告
int
答案 0 :(得分:0)
您的函数接受类型为char*
的参数,但是局部变量char charTest2 = *argv[2]; char strTest = *argv[1]
的类型为char
。类型为char
的变量可以容纳一个字符,然后您的变量将容纳相应的argv
的首字母。相反,char *
是指向内存中字符的指针。它通常指向字符序列的第一个,然后被视为“字符串”;序列(即字符串)以字符串终止字符'\0'
结尾,即0
值。
首先,将它们更改为char*
;第二:我避免直接更改argv
中的字符串,而是进行复制:
char *strTest = strdup(argv[1]);
char *charTest2 = argv[2]; // will not be changed; no copy necessary
如果strdup
不可用,您可以输入:
char *strTest = malloc(strlen(argv[1])+1);
strcpy(strTest,argv[1]);
您需要更改
pw += (*pw != c);
进入
pw += (*pw != *c);