如何将 "int argc and char *argv[]" 添加到我的主要功能并在我的代码中实现?

How to add "int argc and char *argv[]" to my main function and impliment into my code?

我正在创建一个大写函数。我想在我的代码中实现 argc 和 argv 参数,但我不知道该怎么做。

这是我的代码;

Main.c:

#include <stdio.h>
#include <stdlib.h>

#include "upperc.h"


int main(int argc, char *argv[])
{
    char s[] = "HellO2 world3!";

    printf("%s \n", s);
    printf("%s \n", uppercase(s));

    return 0;
}

upper.c:

/*
Parsing the string, then making the letters to uppercase.
*/

#include <stdio.h>
#include "upperc.h"

char * uppercase(char *s) {
    for(char *p = s; *p; ++p) {
        if ('a' <= *p && *p <= 'z')
            *p = *p & ~' ';
    }

    return s;
}

upper.h:

#ifndef UPPERC_H_INCLUDED
#define UPPERC_H_INCLUDED

char * uppercase(char *s);

#endif // UPPERC_H_INCLUDED

因为这看起来像是某种作业,所以我没有给出完整的答案。

argc是参数个数包括被执行的程序名。这意味着 argc 如果没有指定参数则为 1,如果指定了一个参数则为 2 等

不要无条件地将 argv[1] 传递给您的 uppercase 函数。如果 argc 为 1 甚至 0,这将是未定义的行为。(详见下文)

根据您的要求,您应该检查 argc 并仅处理 argv[1](如果可用),这将是第一个参数,或者处理 argv[1]argv[2] ...在必要时循环。


补充细节(对于专家,因为我原来的措辞不准确):

如果您的程序以正常方式调用,argc 的值应至少为 1,并且 argv[0] 将是程序名称。 argv[argc] 的值是一个 NULL 指针。当然,在这种情况下你可以访问指针值,但你不能取消引用它,即你不能访问指针指向的值。

可以以导致 argc 值为 0 的方式调用您的程序。在这种情况下,argv[0] 将是一个 NULL 指针,并且数组元素 argv[1](及其后的所有内容)将是未定义的。

https://en.cppreference.com/w/c/language/main_function