在 C 编程中,参数的传递是通过
int main (int argc, char** argv) {
// code
}
我知道 argc 计算有多少个参数,而 argv 是将这些参数存储在 char*
数组中的位置。我需要帮助提出一种算法,该算法可以查找给定参数是否是 future 参数的子字符串,但传递的这些参数不一定必须是字符串。
例如,如果此文件名为 main
并且我输入 main lo 17 flow 18 19flower
,那么输出应类似于:
lo 是流的子字符串
lo 是花的子串
flow是flower的子串
我刚刚开始自学 C 编程,所以我很难操作 char*
argv 中的参数。 char*
argv 是存储数组的数组吗?就像上面的示例一样,flow
位于数组的索引 3 处,但 flow
本身是一个 char
数组,因此字母“f”位于索引 0 处?如何查找一个参数是否是后面另一个参数的子字符串?
最佳答案
以下是如何将 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 */
}
关于c - 如何检查给定参数是否是另一个给定参数的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51367950/