在C编程中,传递参数是通过
完成的int main (int argc, char** argv) {
// code
}
我知道argc会计算有多少个参数,而argv是将这些参数存储在char*
数组中的位置。我需要一个算法的帮助,该算法可以找到给定的参数是否是将来参数的子字符串,但是传递的这些参数不一定必须是字符串。
例如,如果此文件名为main
,而我输入了main lo 17 flow 18 19 flower
,则输出应类似于:
lo is substring of flow
lo is substring of flower
flow is substring of flower
我刚刚开始自己学习c编程,因此我很难操纵char*
argv中的参数。 char*
是否是一个存储数组的数组?就像上面的示例一样,flow
位于数组的索引三,但是flow
本身是char
的数组,因此字母'f'位于索引0?如何找到一个参数是否是另一个后面的参数的子字符串?
答案 0 :(得分:1)
以下是如何将strstr
与char **argv
一起使用:
假设argv[1] = "lo"
和argv[2] = "flower"
。然后,
char *ptr = strstr(argv[2], argv[1]);
printf("%s", ptr);
printf
语句将打印"lower"
。
if (ptr == NULL) {
/* string was not found */
} else {
/* string was found */
}
答案 1 :(得分:-1)
您可以使用strstr()在另一个字符串中搜索一个字符串。