litengyue 发表于 2024-8-15 11:28:52

【抓狂了】为什么小甲鱼的代码可以我的不行

就是C++课后作业第二十三课动动手示例代码:

#include <stdio.h>

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

        for (i = 0; i < argc; i++)
        {
                printf("%s\n", argv);
        }

        return 0;
}


然后编译运行就有了这个:

C:\Users\Administrator\Desktop\C\s1\e23\argc_argv.exe


请问这是怎么回事?
帮个忙吧。

FishC 发表于 2024-8-15 11:34:07

哎呀,小甲鱼的代码跑得飞起,你的却让你抓狂,这绝对是“代码界”的一大悖论!让我们一起来看看这个问题,顺便来点幽默调剂一下。

首先,咱们看一下你的代码:

#include <stdio.h>

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

    for (i = 0; i < argc; i++)
    {
      printf("%s\n", argv);
    }

    return 0;
}

这里有个小错误:在 `printf` 函数中,你把 `argv` 当作字符串来打印了,实际上,`argv` 是一个字符指针数组(也就是字符串的数组)。所以当你用 `printf("%s\n", argv);` 的时候,它会给你打印出第一个参数的地址,而不是每一个参数的内容。

然后还有个微小的地方,你的 `argv` 应该是 `char *argv[]` 而不是 `char *argv`,这意味着它表示一个字符串数组。

改正后的代码应该是这样的:

#include <stdio.h>

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

    for (i = 0; i < argc; i++)
    {
      printf("%s\n", argv);// 这里要取出每个参数
    }

    return 0;
}

这样,每个 `argv` 就能准确地输出每个命令行参数了。就像逛超市一样,一件件清点你的战利品,嘿嘿!

现在再编译运行试试看,希望能带给你一场愉快的“输出盛宴”!如果还是有问题,那就跟我说,我们一起做个“代码侦探”,找出问题的真相!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

litengyue 发表于 2024-8-15 11:41:29

貌似还是不行啊

liuhongrun2022 发表于 2024-8-15 13:18:05

本帖最后由 liuhongrun2022 于 2024-8-15 13:29 编辑

代码好像没什么问题,运行的问题吧。

注意编译运行的时候用命令行,别用你代码编辑器。

附个图,代码就是楼主的那个。(用g++命令编译是因为写习惯了,不影响效果)

三体人的智子 发表于 2024-8-15 17:07:24

编译器的问题,试试VScode或者DEV-C++吧

litengyue 发表于 2024-8-16 09:28:17

三体人的智子 发表于 2024-8-15 17:07
编译器的问题,试试VScode或者DEV-C++吧

我用的就是Devc++啊

三体人的智子 发表于 2024-8-16 10:22:57

litengyue 发表于 2024-8-16 09:28
我用的就是Devc++啊

DEV-C++ MinGW?

jackz007 发表于 2024-8-16 22:32:04

本帖最后由 jackz007 于 2024-8-16 22:35 编辑

      你必须在编译好的程序("argc_argv.exe")所在的子目录("C:\Users\Administrator\Desktop\C\s1\e23\")内开启一个 CMD 窗口,然后,用下面这条命令运行程序:
argc_argv.exe 12345 abcde FishC
      看看效果呢

bydlyzx 发表于 2024-8-16 23:11:17

一劳永逸的方法,
又一个秘诀:错的只能是你自己,计算机是不会错的!
遇到不懂得地方,发给月之暗面:
让它用初中生能听懂的语言,给你解释一下。
如果发生错误,也发给它,让它检查,告诉你。

litengyue 发表于 2024-8-28 11:11:02

我又试了一遍还是不行啊{:10_266:}

litengyue 发表于 2024-8-28 11:12:15

jackz007 发表于 2024-8-16 22:32
你必须在编译好的程序("argc_argv.exe")所在的子目录("C:%users\Administrator\Desktop\C\s1\e2 ...

怎么开启啊

jackz007 发表于 2024-8-28 11:32:45

本帖最后由 jackz007 于 2024-8-28 22:00 编辑

litengyue 发表于 2024-8-28 11:12
怎么开启啊

         按下 Windows 键不松手,再按下 r 键,Windows 会弹出 "运行" 对话框,在 "打开" 的位置后面键盘输入 "cmd" 三个字符(不带引号)然后用鼠标点击 "确定" 按钮,就会弹出一个 CMD 窗口。
         在 CMD 窗口内,输入如下命令:
cd C:\Users\Administrator\Desktop\C\s1\e23\
         回车,就会来到你编译好的程序所在的路径,这个时候,继续输入如下命令启动程序:
argc_argv 12345 abcde FishC
         你应该就可以从屏幕上观察到程序的输出了。

litengyue 发表于 2024-8-30 16:15:51

jackz007 发表于 2024-8-28 11:32
按下 Windows 键不松手,再按下 r 键,Windows 会弹出 "运行" 对话框,在 "打开" 的位置后面 ...

成功了!
只是有点麻烦......
页: [1]
查看完整版本: 【抓狂了】为什么小甲鱼的代码可以我的不行