在C中启动嵌套的for循环以遍历参数的问题

我对以下代码感到困惑,该代码旨在遍历给定的所有字符串参数并仅打印元音。

$gallery_imgs

该程序有效,但仅在调用./ MARIANO ARGUELLO RIVERA时打印我传递的第一个参数

它仅打印自变量MARIANO的结果,而忽略所有其他结果。

到目前为止,我的猜测(并且我仍然盯着屏幕试图寻找解决方案)在第二个循环#include <stdio.h> #include <string.h> int main(int argc,char *argv[]) { if (argc == 1){ printf("ERROR: You need one argument.\n"); // this is how you abort your program return 1; } int i = 1; int j = 0; printf("Printing number of arguments %d\n",argc); for (i = 1; i <= argc; i++){ for (j = 0; argv[i][j] != '\0'; j++) { char letter = argv[i][j]; if(letter >= 'A' && letter <= 'Z'){ letter = letter + 32; } switch (letter) { case 'a': printf("'A'\n"); break; case 'e': printf("'E'\n"); break; case 'i': printf("'I'\n"); break; case 'o': printf("'O'\n"); break; case 'u': printf("'U'\n"); break; case 'y': if (i > 2) { // it's only sometimes Y printf("'Y'\n"); } break; default: printf("%c is not a vowel\n",letter); } } return 0; } } 中,当程序使用第一个参数时,看到空字节,在第一个字符串的末尾,并停止迭代并且不转到第二个字符串进行处理。

我是对的吗?

还是我应该照顾代码中的其他细节,这样迭代才能成功?

谢谢

itdudu 回答:在C中启动嵌套的for循环以遍历参数的问题

您犯了一个有趣的错误:)

#include <stdio.h>
#include <string.h>

int main(int argc,char *argv[])
{
    if (argc == 1){
        printf("ERROR: You need one argument.\n");
        // this is how you abort your program
        return 1;
    }

    int i = 1;
    int j = 0;
    printf("Printing number of arguments %d\n",argc);

    for (i = 1; i <= argc; i++){
        for (j = 0; argv[i][j] != '\0'; j++) {

            char letter = argv[i][j];

            if(letter >= 'A' && letter <= 'Z'){
                letter = letter + 32;
            }

            switch (letter) {
                case 'a': 
                    printf("'A'\n");
                    break;

                case 'e':
                    printf("'E'\n");
                    break;

                case 'i':
                    printf("'I'\n");
                    break;

                case 'o':
                    printf("'O'\n");
                    break;

                case 'u':
                    printf("'U'\n");
                    break;

                case 'y':
                    if (i > 2) {
                    // it's only sometimes Y
                    printf("'Y'\n");
                    }
                    break;

                default:
                    printf("%c is not a vowel\n",letter);
                }
            }

    }
        return 0;
}

我只是做了一个更正。请立即检查。,它现在可以使用:)

本文链接:https://www.f2er.com/3139399.html

大家都在问