c - 如何检查给定参数是否是另一个给定参数的子字符串

标签 c arguments

在 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 处?如何查找一个参数是否是后面另一个参数的子字符串?

最佳答案

以下是如何将 strstrchar **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/

相关文章:

c++ - 如何在不执行的情况下捕获未定义的行为?

Python 函数 : Pass global variables if only accessing them?

bash - 如何在扩展为匹配文件之前访问文字通配符参数?

c - rand() 函数在选择 IP 时具有概率

c - x86汇编中用于Mandelbrot循环的高效复杂算术

c - 编译器中的抽象语法树 : how exactly to represent a function?

c - 如何确定我的操作系统是否是共享内存多处理器平台

R 命令行将文件名传递给参数中的脚本 (Windows)

scala - 定义翻转参数的函数

python - 获取函数的可变默认参数