标签: strcmp

strcmp无法正常工作

我知道这可能是一个全新的问题(我很长一段时间没有接触过C),但有人可以告诉我为什么这不起作用吗?

printf("Enter command: ");
bzero(buffer,256);
fgets(buffer,255,stdin);

if (strcmp(buffer, "exit") == 0)
    return 0;
Run Code Online (Sandbox Code Playgroud)

如果我输入"exit"它不会输入if,它是否与"buffer"的长度有关?

有什么建议?

c strcmp

7
推荐指数
3
解决办法
2万
查看次数

strcmp()但是在AZ后的0-9?(C/C++)

由于我完全不同意的原因,但是"尽管我的反对意见仍在继续判决的权力(反可用性)",我有一个排序例程,它将基本的strcmp()与其名称排序进行比较.它很棒; 很难弄错那个人.但是,在第11个小时,已经确定以数字开头的条目应该在以字母开头的条目之后出现,与ASCII顺序相反.他们引用EBCDIC标准的数字跟随字母,所以先前的假设不是普遍的事实,我没有权力赢得这个论点......但我离题了.

这就是我的问题所在.我用新函数调用nonstd_strcmp替换了对strcmp的所有适当引用,现在需要实现修改以完成排序更改.我使用FreeBSD源作为我的基础:http://freebsd.active-venture.com/FreeBSD-srctree/newsrc/libkern/strncmp.c.html

 if (n == 0)
  return (0);
 do {
  if (*s1 != *s2++)
   return (*(const unsigned char *)s1 -
    *(const unsigned char *)(s2 - 1));
  if (*s1++ == 0)
   break;
 } while (--n != 0);
 return (0);
Run Code Online (Sandbox Code Playgroud)

我想我可能需要花一些时间来真正思考它应该如何完成,但我确信我不是唯一一个经历过刚刚释放规范变化的大脑死亡的人.

c c++ strcmp lexicographic

7
推荐指数
4
解决办法
1275
查看次数

可装载的Bash内置

我正在写一个strcmp bash内置.编译很好,但是当我尝试启用它时,我得到:

$ enable -f ./strcmp strcmp
bash: enable: cannot open shared object ./strcmp: ./strcmp: only ET_DYN and ET_EXEC can be loaded
Run Code Online (Sandbox Code Playgroud)

我内置的重要部分:

strcmp_builtin (list)
WORD_LIST *list;

char *strcmp_doc[] = {
    (char *)NULL
};

struct builtin strcmp_struct = {
    "strcmp", /* builtin name */
    strcmp_builtin, /* function implementing the builtin */
    BUILTIN_ENABLED, /* initial flags for builtin */
    strcmp_doc, /* array of long documentation strings. */
    "strcmp 'string 1' 'string 2'", /* usage synopsis; becomes short_doc */
    0 /* reserved …
Run Code Online (Sandbox Code Playgroud)

c bash built-in strcmp

7
推荐指数
2
解决办法
3678
查看次数

Strcmp用于MATLAB中不等长的单元阵列

有没有一种简单的方法可以在较大的字符串中找到较小的字符串数组?我有两个列表,一个有独特元素,另一个有重复元素.我想在较大的数组中找到较小数组的特定模式的全部出现.我知道strcmp会比较两个单元格数组,但前提是它们的长度相等.我的第一个想法是使用循环遍历较大阵列的子集,但必须有一个更好的解决方案.

例如,在以下内容中:

smallcellarray={'string1',...
                'string2',...
                'string3'};
largecellarray={'string1',...
                'string2',...
                'string3',...
                'string1',...
                'string2',...
                'string1',...
                'string2',...
                'string3'};

index=myfunction(largecellarray,smallcellarray)
Run Code Online (Sandbox Code Playgroud)

会回来的

index=[1 1 1 0 0 1 1 1]
Run Code Online (Sandbox Code Playgroud)

matlab strcmp cell-array

6
推荐指数
2
解决办法
4360
查看次数

strcmp指针不能在C中工​​作

为什么这段代码不起作用.只是试图检查用户输入是否与密码相同

char *pass;

printf("Write the password: ");
scanf("%s", pass); // Because is a pointer the & is out ?


if( strcmp( pass , "acopio") == 0)
Run Code Online (Sandbox Code Playgroud)

c pointers strcmp

6
推荐指数
2
解决办法
1万
查看次数

使用C中的strcmp()比较输入字符串的一部分

通常strcmp使用两个参数[例如strcmp(str1,"garden")],如果两者都相同则返回0.

是否可以比较输入的一部分,比如输入的前五个字符?(例如strcmp(str1,"garde",5))

#include <stdio.h>
#include<string.h>

int main(void) {

    char str1[] = "garden";

    if (strcmp(str1, "garden") == 0)
    {
        printf("1");
    }
    if (strcmp(str1, "garden", 6) == 0)
    {
        printf("2");
    }
    if (strcmp(str1, "garde", 5) == 0)
    {
        printf("3");
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c strcmp

6
推荐指数
1
解决办法
3万
查看次数

strcmp无法将'std :: string {aka std :: basic_string <char>}'转换为'const char*

为问题的基本性质提前道歉.

我试图使用该strcmp函数来测试两个匹配字符的字符串.

我将问题简化为以下简单代码:

#include <iostream>
#include <cstring> 

using namespace std;

void compareStrings(string, string);

int main()
{
    string string1 = "testString", string2 = "testString";
    compareStrings(string1, string2);
    return 0;
}

void compareStrings(string stringOne, string stringTwo)
{
    if (strcmp(stringOne,stringTwo) == 0)
        cout << "The strings match." << endl;
    else 
        cout << "The strings don't match." << endl;
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释以下编译器错误消息吗?

./newProgram.cpp: In function ‘void compareStrings(std::string, std::string)’:
./newProgram.cpp:17:32: error: cannot convert ‘std::string {aka std::basic_string<char>}’ to ‘const char*’ for argument ‘1’ to ‘int strcmp(const …
Run Code Online (Sandbox Code Playgroud)

c++ strcmp

6
推荐指数
1
解决办法
3万
查看次数

如何正确比较命令行参数?

我正在尝试编写一个在main中接受参数的C代码; 因此当我在cmd中写一些字符串时,程序会在其中执行某些操作.但我做错了什么,我找不到它.

这是代码:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char * argv[]){   //File name is main.c
    if(argc != 3)
        printf("Wrong!!!!!!!!!");
    else
        if (argv[1] == "-s")
            girls();  //Prints "Girls"
        else if(argv[1] == "-k")
            boys();   //Prints "Boys"
        else
            printf("OMG!!");
}
Run Code Online (Sandbox Code Playgroud)

在cmd;

gcc -o gender main.c

gender -s pilkington

我输入那些命令.总是输出

"我的天啊!!"

哪部分错了?

c string string-comparison strcmp command-line-arguments

6
推荐指数
1
解决办法
6086
查看次数

c - strcmp对于相等的字符串不返回0

所以我试图广泛地搜索这个解决方案,但只能找到其中一个字符串中缺少新行或空字节的帖子.我很确定这不是这种情况.

我使用以下函数将一个单词与一个文件进行比较,该文件包含每行一个单词的单词列表(函数中的字典).这是代码:

int isWord(char * word,char * dictionary){
  FILE *fp;
  fp = fopen(dictionary,"r");
  if(fp == NULL){
    printf("error: dictionary cannot be opened\n");
    return 0;
  }
  if(strlen(word)>17){
    printf("error: word cannot be >16 characters\n");
    return 0;
  }
  char longWord[18];
  strcpy(longWord,word);
  strcat(longWord,"\n");
  char readValue[50] = "a\n";
  while (fgets(readValue,50,fp) != NULL && strcmp(readValue,longWord) != 0){
    printf("r:%sw:%s%d\n",readValue,longWord,strcmp(longWord,readValue));//this line is in for debugging
  }
  if(strcmp(readValue,longWord) == 0){
    return 1;
  }
  else{
    return 0;
  }
}
Run Code Online (Sandbox Code Playgroud)

代码编译时没有错误,函数会很好地读取字典文件,并打印出现在那里的单词列表.我遇到的问题是,即使两个字符串相同,strcmp也不会返回0,因此函数将为任何输入返回false.

我得到:

r:zymoscope
w:zymoscope
-3
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我觉得我必须遗漏一些显而易见但却无法在搜索中找到任何内容的东西.

c strcmp

6
推荐指数
1
解决办法
4011
查看次数

如何在 C++ 中比较两个字符串之间可以有空字符 \0?

我想比较两个字符串 s1 和 s2 ,两个字符串之间可以有空字符。我想要区分大小写和不敏感的比较,如 strcmp 和 strcasecmp。假设我的字符串是:

std::string s1="Abcd\0abcd"
std::string s2="Abcd\0cccc"
Run Code Online (Sandbox Code Playgroud)

目前,我正在执行strcmp(s1.c_str(), s2.c_str())and strcasecmp(s1.c_str(), s2.c_str())butstrcasecmpstrcmp最终在这种情况下给出 equal 并跳过之后的比较\0。我可以使用任何库来比较这些字符串。

c++ strcmp

6
推荐指数
1
解决办法
285
查看次数