【问题标题】:compare strings with strcmp function works different [closed]使用 strcmp 函数比较字符串的工作方式不同[关闭]
【发布时间】:2014-06-05 18:01:03
【问题描述】:

我正在以下列方式将两个字符串与 strcmp 进行比较:

long t=1011;
char tc[10], tcr[10];
ltoa(t,tc,10);
cout<<tc<<endl;  //prints 1011
strcpy(tcr, strrev(tc));
cout<<tcr<<endl; //prints 1101
cout<<strcmp(tc,tcr);

这给了我一个结果 0,这表明字符串是相等的。但是,当我尝试时:

cout<<strcmp("1011", "1101"); // prints -1 thats okay

我得到 -1 的期望值。我做错了什么?我正在使用 devc++ 编译器版本 4.9.9.2

【问题讨论】:

  • strrev 函数更改 tc 字符串(它适用于 tc 数组)。 strrev 和 strcpy 后 tcr 等于 tc。
  • 是的,亚当,你是对的,它可以正常工作。

标签: c++ strcmp string.h


【解决方案1】:

这取决于函数strrev 是如何定义的,如果它将参数反转到位,那么结果是预期的,因为 tc 被反转了。

例如函数strrev可以声明如下

char * strrev( char *s );

并且返回值和参数的值将相等。

考虑到strrev 不是标准函数。

【讨论】:

    【解决方案2】:

    如果您像这样更改代码:

    long t=1011;
    char tc[10], tcr[10];
    ltoa(t,tc,10);
    strcpy(tcr, strrev(tc));
    cout<<tc<<endl; 
    cout<<tcr<<endl;
    cout<<strcmp(tc,tcr);
    

    然后你会看到 tc 和 tcr 是一样的。 strrev 原地反转输入字符串,1101 被打印两次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-03
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      • 2019-06-19
      相关资源
      最近更新 更多