我想知道导致代码显示错误的问题是什么?

萨拉·汉迪

我想知道在哪里写一个函数,给定一个字符串,如果所有字符都不同,则返回TRUE,如果重复任何字符,则返回FALSE。


#include <stdio.h>
char distinct_or_not_string(char *string []);
int main()
{ 
  char str[20];
  char result;
  printf("please entre your string:");
  gets(str);
  printf("\n");
 result=distinct_or_not_string(str);   

}
char distinct_or_not_string(char *string [])
{
    int i=0,j;
    while(string[i]!='\0')
    {
        j=i+1;
        while(string[i]!='\0')
        {
              if(string[i]==string[j])
              {
                  return printf("false");
              }
         j++;
        }
        i++;
    }
    return printf("true");
}
RobertS支持Monica Cellio

您的代码有四个问题。

  1. 您通常gets从中捕获字符串stdin永远不要使用gets由于安全原因不建议使用它,因为这样,当输入字符串比缓冲区本身长时,您很容易遇到缓冲区溢出。gets不要停止扫描。

为什么gets功能如此危险以至不应该使用它?

使用fgets代替,它根据缓冲区的大小限制输入:

fgets(str, sizeof str, stdin);

  1. 参数类型错误distinct_or_not_string()
char distinct_or_not_string(char *string []);

string是类型,char **但您想将指针传递给字符串。二者必选其一char string[]char *string其中string的类型的char *


  1. 第二个while循环使用错误的对象证明条件,i而不是j
while(string[i]!='\0')

  1. 使用printf作为的返回值distinct_or_not_string()
return printf("false");

printf()将始终被评估为1(假设在打印时未发生错误),因此resultmain函数中,1无论字符串是否具有两次或多次以上的字符,该函数将始终具有,这是不合适的。

将两者分开,然后将每个语句分开:

printf("false");
return 0;

printf("true");
return 1;

旁注:distinct_or_not_string()不需要返回char在这种情况下,返回值与字符串或字符无关。

因此distinct_or_not_string(),在我看来,返回类型最好是int更好的可读性和避免混淆,尽管使用它不是语法错误char函数的声明将如下所示:

int distinct_or_not_string(char *string);

更正后的代码应如下所示:

#include <stdio.h>

int distinct_or_not_string(char* string);

int main()
{ 
  char str[20];
  int result;

  printf("please enter your string: ");
  char *p = fgets(str,sizeof str,stdin);
  if(p == NULL)
  {
      printf("Error occurred at reading the input!");
      return 1;
  }

  printf("\n");

  result = distinct_or_not_string(str); 
  return 0;  
}

int distinct_or_not_string(char *string)
{
    int i=0,j;
    while(string[i] != '\0')
    {
        j=i+1;
        while(string[j] != '\0')
        {
              if(string[i] == string[j])
              {
                  printf("false");
                  return 0;
              }
         j++;
        }
        i++;
    }
    printf("true");
    return 1;

如果要在线测试此代码,请访问以下链接:https : //onlinegdb.com/H1PCstoSL

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我试图做一个移动的对象,但是代码没有做任何事情。我想知道问题是什么?

来自分类Dev

我想知道以下代码的功能是什么

来自分类Dev

是什么导致我的代码错误

来自分类Dev

等效于nodejs中的以下代码。我想知道FirstorDefault方法的作用是什么?

来自分类Dev

超时错误。此代码段中的性能问题是什么?

来自分类Dev

当我在 linux 上运行 dpkg 时出现以下错误消息?问题是什么?

来自分类Dev

我想知道PYTHON的赏金挑战是什么

来自分类Dev

使用改造(pdf、ppt、png、jpg)“代码= 500,内部服务器错误”上传文件的问题是什么

来自分类Dev

是什么导致我的代码不知道我想从本地存储中删除哪个值?

来自分类Dev

kruskal.test显示“所有组级别必须是有限的”错误。问题是什么?

来自分类Dev

kruskal.test显示“所有组级别必须是有限的”错误。问题是什么?

来自分类Dev

我只是想知道为什么以下代码在执行时不会出现分段错误

来自分类Dev

在派生类的字段中运行的代码顺序是什么?我想知道为什么得到此输出,我听不懂

来自分类Dev

我不知道为什么我的代码是错误的?那是什么错呢?

来自分类Dev

不知道是什么原因导致我的ArrayIndexOutOfBoundsException错误

来自分类Dev

是什么导致我的PHP文件显示代码而不是执行代码?

来自分类Dev

不确定这个问题是什么?

来自分类Dev

实际问题是什么?MySQL的?

来自分类Dev

如何查看XmlHttpRequest的问题是什么

来自分类Dev

<form>标签的问题是什么?

来自分类Dev

JavaScript中+0的问题是什么?

来自分类Dev

想知道在以下代码行中传递的是什么变量(查询)

来自分类Dev

想知道为什么我的代码无法删除我想要的任何号码?

来自分类Dev

我想知道为什么我的代码在 XML 信息之间产生空白行?

来自分类Dev

我的代码错误我不知道出了什么问题。特金特

来自分类Dev

我想知道While(cin)测试什么?

来自分类Dev

Cassandra nodetool 状态显示错误。我想知道我的 cassandra 节点的状态

来自分类Dev

我想知道,当startOffsetTime的值是kafka.api.OffsetRequest.EarliestTime()。offset值是什么?

来自分类Dev

我想知道为什么Clojure中不评估代码的优点是数据

Related 相关文章

  1. 1

    我试图做一个移动的对象,但是代码没有做任何事情。我想知道问题是什么?

  2. 2

    我想知道以下代码的功能是什么

  3. 3

    是什么导致我的代码错误

  4. 4

    等效于nodejs中的以下代码。我想知道FirstorDefault方法的作用是什么?

  5. 5

    超时错误。此代码段中的性能问题是什么?

  6. 6

    当我在 linux 上运行 dpkg 时出现以下错误消息?问题是什么?

  7. 7

    我想知道PYTHON的赏金挑战是什么

  8. 8

    使用改造(pdf、ppt、png、jpg)“代码= 500,内部服务器错误”上传文件的问题是什么

  9. 9

    是什么导致我的代码不知道我想从本地存储中删除哪个值?

  10. 10

    kruskal.test显示“所有组级别必须是有限的”错误。问题是什么?

  11. 11

    kruskal.test显示“所有组级别必须是有限的”错误。问题是什么?

  12. 12

    我只是想知道为什么以下代码在执行时不会出现分段错误

  13. 13

    在派生类的字段中运行的代码顺序是什么?我想知道为什么得到此输出,我听不懂

  14. 14

    我不知道为什么我的代码是错误的?那是什么错呢?

  15. 15

    不知道是什么原因导致我的ArrayIndexOutOfBoundsException错误

  16. 16

    是什么导致我的PHP文件显示代码而不是执行代码?

  17. 17

    不确定这个问题是什么?

  18. 18

    实际问题是什么?MySQL的?

  19. 19

    如何查看XmlHttpRequest的问题是什么

  20. 20

    <form>标签的问题是什么?

  21. 21

    JavaScript中+0的问题是什么?

  22. 22

    想知道在以下代码行中传递的是什么变量(查询)

  23. 23

    想知道为什么我的代码无法删除我想要的任何号码?

  24. 24

    我想知道为什么我的代码在 XML 信息之间产生空白行?

  25. 25

    我的代码错误我不知道出了什么问题。特金特

  26. 26

    我想知道While(cin)测试什么?

  27. 27

    Cassandra nodetool 状态显示错误。我想知道我的 cassandra 节点的状态

  28. 28

    我想知道,当startOffsetTime的值是kafka.api.OffsetRequest.EarliestTime()。offset值是什么?

  29. 29

    我想知道为什么Clojure中不评估代码的优点是数据

热门标签

归档