C编程-初始化从指针生成整数,无需强制转换

C编程-初始化从指针生成整数,无需强制转换,c,C,有些命令行参数有问题,基本上只是尝试使用命令行参数创建一个矩形。这是我得到的 #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]){ int x; int y; int i; int j; x = atoi(argv[1]); y = atoi(argv[2]); fprintf(stderr, "Height &

有些命令行参数有问题,基本上只是尝试使用命令行参数创建一个矩形。这是我得到的

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

int main(int argc, char *argv[]){

    int x;
    int y;
    int i;
    int j;

    x = atoi(argv[1]);
    y = atoi(argv[2]);

    fprintf(stderr, "Height & Width Needed\n", argv[0]);

    return 1;

    for(i = 0; i < x; i++)
        for(j = 0; j < y; j++)
            printf("*");
        printf("\n");

    return 0;
}

我知道这是业余时间,但我才刚刚开始。添加了argv[0]语句的stderr,包括atio,每次编译我都会得到我的usage语句。我试着只在外循环上添加花括号,然后在外循环和内循环上添加花括号,每次使用命令运行时仍然只得到我的stderr。您的返回1周围没有if结构;因此,它将始终被执行

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

int main(int argc, char *argv[])
{
    if (argc != 3) {
        fprintf(stderr, "Usage: %s height width\n", argc > 0 ? argv[0] : "");
        return 1;
    }
    int x = atoi(argv[1]);
    int y = atoi(argv[2]);

    for (int i = 0; i < x; i++) {
        for (int j = 0; j < y; j++) {
            printf("*");
        }
        printf("\n");
    }
}

注意:atoi未检测到错误,请改用strtol。

int x=argv[1];->x=atoiargv[1];include命令行参数是字符串。如果需要整数,则必须将其转换为整数。atoi是一种方式。其他选项:strtol和sscanf.fori=0;i为i=0;i