我正在编写一个程序,该程序必须使用 main 中的指针来使用 strcmp 函数。不能有任何用户输入。没有菜单,它必须在主函数中将参数作为参数执行。我的问题是我正确调用 strcmp 函数吗?
int main(int n, char **p, char **choice)
{
int i, x, A[100];
if (strcmp(*choice, "mode")==0){
您的代码将编译并且在语法上是正确的,但我不确定逻辑是否是您想要的。
通常main
有 2 或 3 个参数,通常写为int argc, char **argv, char ** envp
(如果只有 2 个,则为前 2 个)。可以像以前一样将它们重命名为 n、p 和选择,但您需要知道它们各自的含义。
argc
("n") 是argv
数组中的字符串数,索引为 0。总会有至少 1 个参数 - 程序的名称。在命令行上传递的参数从argv[1]
.
argv
是所有参数,包括程序名称。数组将从 0 变为argc
- 1
envp
是列出所有环境设置的字符串数组。它以 NULL 条目作为其最后一个条目终止。
如果您的任务是将参数作为参数执行,您可能会对遍历 argv 中的字符串感兴趣。你会想要这样的东西:
int i = 1;
for (i = 1; i < argc; ++i) {
if (strcmp(argv[i], "mode") == 0) {
当然,如果你想保留你的变量名,只需替换它们:
int i = 1;
for (i = 1; i < n; ++i) {
if (strcmp(p[i], "mode") == 0) {
所以,是的。您的使用strcmp
在语法上是可以接受的。但它可能不会做你想要的。
祝你好运!
顺便说一句,如果您需要遍历 envp,您可以按以下方式进行:
int i = 0;
while (envp[i] != NULL) {
if (strcmp(envp[i], "mode") == 0) { // or whatever else you needed to do.