这是一个打印一些关于我自己的信息的程序 在此程序中,如果用户扫描/ n打印其名称和 等等,但是当我使用gcc运行这个程序时,它什么都没打印。 我需要使用argv和argc扫描参数。 我该怎么解决?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 10
int main(int argc, char** argv)
{
for (int i = 1; i < SIZE; i++)
{
if (argv[i] == ' ')
{
break;
}
if (argv[i] == 'n' || argv[i] == 'b' || argv[i] == 'f' || argv[i] == '?' && argv[i - 1] == '/')
{
switch (i)
{
case 'n':
printf("my name is : Daniel Zingerman \n");
break;
case 'b':
printf("my birth date is: 2/11 \n");
break;
case 'f':
printf("my favorite food is: ice cream \n");
break;
case '?':
printf("the instruction of the program:");
printf("There is a lot of parameters you can scan into the program:");
printf("1. /n - printing the name");
printf("2. /b - printing the birth date");
printf("3. /n - printing the favorite food");
printf("4. /? - printing the instructions");
break;
}
}
}
system("pause");
return(0);
}
答案 0 :(得分:0)
您应该使用argc值来了解最后一个参数。或者你应该测试argv[i] == NULL
。您好像不明白argv
是char **
,因此argv[i]
是char *
,而不是char
。
还要学会使用getopt()或getopt_long()。
答案 1 :(得分:0)
argv[]
数组是从argv[0]
中的程序名创建的,然后是以空格分隔的命令行参数
/ n / b / f将在argv[1], argv[2] & argv[3]
中返回,而不是单个&#39;字符串&#39;在argv[1]
使用argc
来限制您测试的argv[]
元素数量,以便您不会超出界限:
for (int i = 1; i < argc; i++) {
现在您需要检查是否有有效的命令行参数:
if ((strcmp(argv[i], "/n") == 0) || ...
由于您需要案例测试的整数值,请使用argv [i]的第二个元素:
switch (argv[i][1]) {