如何将 c 变量设置为如果输入则应打印 "hello world 3" 或如果未输入则仅打印前两个?

How can I set the c variable to that if entered then it should print "hello world 3" or if not entered then only the upper two should be printed?

这是一个程序,用于在 运行 时间从用户那里获取输入并根据输入的参数打印 hello world。用户可以打印 2 hello world。然而,第三个 hello world 是有条件的,取决于是否输入 c 值。

#include <stdio.h>
#include <unistd.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>


int main(int argc, char *argv[])
{
 unsigned int a, b, c;


        a = strtoul(argv[1], 0, 0);
        b = strtoul(argv[2], 0, 0); 
        c = strtoul(argv[3], 0, 0); 

        int *p= NULL;//initialize the pointer as null.

        printf("\n first no %d \n ", a);
        printf("\n second no %d \n ", b);

        if ( c == *p)
        {
                    printf("\n third no %d \n ", c);
        }

    return 0;
}
  1. 假设我 运行 程序为 ./hello 1 2 -> 这将打印“hello 世界 1" "你好世界 2".
  2. 如果我 运行 程序为 ./hello 1 2 3 -> 这将打印“hello world 1”“hello world 2”“hello world 3”。
  3. 如何修正我的程序以获得预期的效果?

main函数的第一个参数argc表示传递给程序的参数个数,所以你可以通过检查argc的值来判断你程序的行为.

(例如,如果您 运行 程序为 ./hello 2 7 1 8,那么 argc 的值将是 5。)

#include <stdio.h>

int main(int argc, char *argv[])
{
    for (int i = 1; i < argc; ++i)
    {
        printf("hello world %s\n", argv[i]);
    }
    return 0;
}