【问题标题】:When i compile this programm it puts radon text in the console当我编译程序时,它会在控制台中进行氡测试
【发布时间】:2022-01-20 22:38:10
【问题描述】:

当我编译并运行它时,大量随机字母出现在它关闭

#include <stdio.h>

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


    int x;
    for(x = 0; x < argc; x++)
    {
    while(*argv[x])
        {
        putchar(*argv[x]);
        *argv[x]++;
        }
    putchar('\n');
    }
    return 0;

}

这个程序应该从命令行获取输入 并打印它(我希望它以这种格式来测试 *argv[] 工作的原因和方式)

【问题讨论】:

  • while(*argv[x]) 不知道你想在那里做什么,但x 在那个循环中没有改变,所以它总是不断地访问相同的argv[x],当然它永远不会结束。
  • 这个程序应该从控制台获取输入 不,argv 从命令行参数而不是 stdin 获取值。如果您想从stdin 获取输入,请使用scanf
  • 检查你循环的内容。代码与散文不符

标签: arrays c pointers


【解决方案1】:

问题在第三行:

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

应该是char *agrv[],而不是int *argv[]。写int *argv[] 是错误的,因为int 是四个字节,而char 只有一个字节

写这个应该可以解决问题:

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

【讨论】:

    【解决方案2】:

    您可以考虑检查错误。

    #include <stdio.h>
    
    int main(int argc, char *argv[])
    {
        // Exit status if the argument count is incorrect
        if (argc != 2)
        {
            printf("Usage: ./program string\n");
            return 1;
        }
    

    此外,您可能希望在不使用 printf() 函数编写循环的情况下打印字符串。

    // Print the whole string in one step
    printf("%s\n", argv[1]);
    return 0;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-03
      • 2012-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      相关资源
      最近更新 更多