【发布时间】:2020-08-24 21:26:45
【问题描述】:
我不精通 c,我遇到了问题
- 逐个字符迭代 char*
- 正确比较单个字符与另一个字符
给定一个像“abcda”这样的字符串,我想计算“a”的数量并返回计数
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int main(int argc, char** argv){
char* string_arg;
int counter = 0;
if(argc == 2){
for(string_arg = argv[1]; *string_arg != '\0'; string_arg++){
printf(string_arg);
printf("\n");
/*given abcda, this prints
abcda a
bcda b
cda but i want c
da d
a a */
if(strcmp(string_arg, "a") == 0){ //syntax + logical error
counter++;
}
}
printf(counter);
}
else{
printf("error");
}
return(0);
}
我也不应该使用 strlen()
如何正确地一次比较一个字符?
【问题讨论】:
-
旁注:
printf(string_arg);很危险。string_arg是用户输入,所以它可以是任意字符串,包括包含%的字符串。应该是printf("%s", string_arg);或fputs(string_arg, stdout);。 -
@MikeCAT 哦,我明白了。当我打印用户输入时,我一定会实现这一点。在这种情况下,他们在那里只是为了让我可以看到。谢谢。
-
@RobertSsupportsMonicaCellio 我在写的时候似乎遗漏了 c。已编辑。
标签: c string character string-comparison strcmp