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

Board

分配任务是计算单词中的字母数,当我编译时不会出现任何错误,但是当我尝试运行它时根本无法工作

#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++;
    }
}

当我按下Enter键之后,什么也没发生。

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

四个问题:

  • 缺少def perm_parity(lst): parity = 1 lst = lst[:] for i in range(0,len(lst) - 1): if lst[i] != i: parity *= -1 mn = argmin(lst[i:]) + i lst[i],lst[mn] = lst[mn],lst[i] return parity def argmin(lst): return lst.index(min(lst)) def permutations(lst): if len(lst) <= 1: return [lst] templst = [] for i in range(len(lst)): part = lst[:i] + lst[i+1:] for j in permutations(part): templst.append(lst[i:i+1] + j) return templst 上的return语句
  • 您没有更新strcompare的指针
  • 在具有4个元素的C数组中,最后一个元素在索引3中,因此在for循环条件下,您必须检查char*,而不是<
  • <=是错误的,您正在检查字符是否为字符*str != '0',而不是转义字符0,因此以这种方式检查此字符{{1} }

完成这些操作后,代码将如下所示:

\0

*str != '\0'变量也没用,所以我刚刚将其删除

,

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

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

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

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

之所以没有看到任何事件,是因为您陷入了无限循环。

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

大家都在问