C代码编译没有错误,但运行不正确(命令行参数和指针)

诺亚·豪伦(Noah Howren)
#include <stdio.h>

int strcompare (char*);
int main (int argc, char *argv[])
{
    int argIndex;
for(argIndex = 1; argIndex <= argc; argIndex++)
{
    strcompare(argv[argIndex]);
    printf("%s has %d letters in it\n", argv[argIndex], strcompare(argv[argIndex]));
}
return 0;
}

int strcompare (char *str)
{
    int index, letterDex = 0;
    for (index = 0; *str != '0'; index++)
    {
        letterDex++;
    }
}

分配是计算单词中字母的数量,当我编译时没有任何错误,但是当我尝试运行它时根本不起作用

./cma_length noah bruh conner

当我按下Enter键之后,一切都没有了。

Glamdring

它看起来不像要编译的代码。函数strcompare应该返回一个int,在上面的实现中它不返回任何东西。我假设有一个退货letterDex; 在函数末尾,但是在此处复制代码时丢失了它。

在strcompare函数的for循环中,您正在将* str与'0'进行比较。我认为现在有两件事是错误的:

  1. 您正在将* str与'0'进行比较,但是您没有更改指针值。因此,您一直都在比较第一个字符与“ 0”。您应该做str [index]!='0',或者不使用索引递增指针。

  2. 我认为您想寻找的是'\ 0'而不是'0'。'\ 0'是一个空终止符,表示字符串的结尾。

您什么都没看到的原因是因为您陷入了无限循环。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

$?中的命令行perl错误值不正确?

不正确的JSON被编组到结构而没有错误

从命令行编译和运行Java

为什么在将main声明为`int main(void)`时传递命令行参数时没有错误?

Python命令行参数-没有参数时希望打印错误

命令行中的SMS Twilio API错误,但浏览器中没有错误,但没有发送消息

命令行参数不正确

TypeScript:函数返回值不正确没有错误

现有C代码中的C命令行参数

在没有CRT编译的程序中,是否可以通过argv读取命令行参数?

有没有一种方法可以基于命令行参数来定义数组大小?运行时间与编译时间实例化?

本地编译的c ++代码循环不正确

传递*时,命令行参数编号不正确

从OS X命令行调用的ctags不正确

从命令行调用时,如何无条件打开存在的所有折叠而没有错误?

在Gradle中运行命令行不正确

C ++代码编译没有错误,但是在运行时给出了“分段错误”

hdparm错误:感觉数据不正确/丢失(没有hdparm命令起作用)

在Perl中运行此命令的正确方法是什么,没有错误返回

c#命令行没有错误行号

当有错误的命令行参数时,如何让 getopt_long() 不打印任何内容?

从命令行编译和运行具有复杂文件结构的java程序

如何在单个命令行中编译和运行代码并制作 gnuplot 指令

c 代码文件崩溃,编译时没有错误

不正确的宏定义没有错误

从命令行输入结果不正确

Python 脚本不会从命令行运行。它显示没有错误

Kotlin 从命令行编译和运行

即使编译过程没有错误和警告,也无法从源代码执行程序(Dev C++)