标签: strcmp

我调用strcmp时出错从'int'到'const char*'的转换无效

我正在使用strcmp来比较c ++中的字符数组,但是每次出现strcmp都会出现以下错误:error:从'int'到'const char*'的无效转换后跟:error:初始化'int strcmp的参数2 (const char*,const char*)'

我已经包含了string,string.h和stdio.h,这是我的代码,感谢所有回复的人.

另外,除了一堆if语句之外,还有更好的方法来检查缓冲区吗?


int main(int argc, char* argv[])
{
    unsigned count = 0;
    bool terminate = false;
    char buffer[128];

do {
    // Print prompt and get input
    count++;
    print_prompt(count);
    cin.getline(buffer, 128);

    // check if input was greater than 128, then check for built-in commands
    // and finally execute command
    if (cin.fail()) {
        cerr << "Error: Commands must be no more than 128 characters!" << endl;
    }
    else if ( strcmp(buffer, 'hist') == 0 ) …
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)

c++ strcmp

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

为什么strcmp在这种情况下不返回0?

所以我从一个文件中逐个读取字符:

char temp[3];

temp[0] = nextchar;
printf("%c",temp[0]); //prints %

temp[1] = nextchar = fgetc(srcptr);
printf("%c",temp[1]); //prints 2

temp[2] = nextchar = fgetc(srcptr);
printf("%c",temp[2]); //prints 0

if(strcmp(temp, "%20") == 0) { printf("%s","blahblah"); }
Run Code Online (Sandbox Code Playgroud)

理想情况下,这应该在最后打印"blahblah".但事实并非如此.那么为什么strcmp返回0,更重要的是:我该如何修复呢?

c strcmp

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

strcmp在这个程序中有什么问题?

当我运行程序并回答"是"时,它告诉我我错了.有没有人知道执行此类程序的方法?

#include <string.h>
#include <stdio.h>
int strcmp(const char *str1,const char *str2 );

// I am trying to make a program that asks the user to input an answer 
int main() 
{
    char answer[20];


    printf("Can birds fly?\n");   
    scanf("%s", &answer[20]);    


    if(strcmp(answer, "yes") == 0)  
    {
        printf("You are right"); 
    }else
    {
        printf("You are worng"); 
    }

    return 0; 
}
Run Code Online (Sandbox Code Playgroud)

c strcmp

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

32位和64位系统中的strcmp行为

以下代码在32位和64位操作系统中表现不同.

char *cat = "v,a";
if (strcmp(cat, ",") == 1)
    ...
Run Code Online (Sandbox Code Playgroud)

上述条件在32位中为真,但在64位中为假.我想知道为什么会有所不同?32位和64位操作系统都是Linux(Fedora).

c strcmp 32bit-64bit

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

strcmp()可以在c ++中使用字符串吗?

我有这行代码

if(strcmp(ob[i].getBrand(), ob[j].getBrand()) > 0)
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

错误C2664:'strcmp':无法将参数1从'std :: string'转换为'const char*'

这是否意味着strcmp不能使用字符串,而是必须将其转换为char?

c++ string strcmp

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

即使比较在相同的字符串之间,strcmp()也会返回错误的值

#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;

int main()
{
    string x;
    cin>>x;

    if(strcmp(&x.at(0), "M") == 0)
    {
        cout<<"midget ";
    }
    else if(strcmp(&x.at(0), "J") == 0)
    {
        cout<<"junior ";
    }
    else if(strcmp(&x.at(0), "S") == 0)
    {
        cout<<"senior ";
    }
    else
    {
        cout<<"invalid code";
    }

    if(strcmp(&x.at(1), "B") == 0)
    {
        cout<<"boys";
    }
    else
    {
        cout<<"girls";
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我已经使用上面的代码来比较MB应该返回"侏儒男孩",但它继续下降到其他并返回"无效的codeboys".不知何故第二个条件正常.我的诊断告诉我,在第一次比较它返回66.我猜这是"M"的ASCII代码.但是我现在如何解决我的问题呢?

c++ string if-statement strcmp

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

在c中检查字符串的第一个字母

我在C中编写一个非常简单的函数来检查字符串是绝对路径还是相对路径.无论我尝试什么,它总是返回false.

这是我尝试过的:

int isAbsolute(char *str){
    if(strcmp(str,"/")){
        return 1;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我称之为:

printf("%d\n", isAbsolute("/"));
Run Code Online (Sandbox Code Playgroud)

每次都返回false.很明显,我错过了一些明显的东西,但我无法弄明白......

c strcmp strncmp

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

我的用于检查字符串内容和长度的程序遇到一些问题

我无法在命令提示符下键入第二个输入,它说我的程序已停止。我只是尝试自己的代码。我添加了两个函数来检查字符串的长度和内容。而且我可以简单地使用strcmp(),但是我避免将其用于练习。

#include<stdio.h>
#include<string.h>
int lencompare(char *str1, char *str2){
    int len1, len2;
    len1 = strlen(str1);
    len2 = strlen(str2);
    return (len1==len2) ? 1 : 0;
}
int compare(char *str1, char *str2){
    int i =0, flag=0;
    if(lencompare(str1, str2)==1){
        while(*(str1+i) != '\0');
        {
            if(*(str1+i) == *(str2+i))
             flag = 1;
            else
             flag = 0;
            i++;
        }
        return flag;
    }
    if(lencompare(str1, str2) == 0){
        printf("Length is Different");
    }
}
int main(){
    char *str1 , *str2 ;
    fgets(str1, 20, stdin);
    fgets(str2, 20, stdin);
    if(compare(str1, str2) == 1){ …
Run Code Online (Sandbox Code Playgroud)

c c-strings strlen strcmp

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

我无法将字符作为字符串访问

我有以下代码:

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

char values[] = {"abcde"};

int main(int argc, char *argv[])
{
    printf("%d\n", strcmp(&values[0], argv[1]));
    return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

我以这种方式编译和启动:

$ gcc main.c -o main
$ ./main a
98
Run Code Online (Sandbox Code Playgroud)

的结果strcmp是 98,所以值不一样。当我替换&values[0]通过"a"在代码中,我看到,他们是相同的(strcmp输出等于0)。

那么有没有办法values[0]作为字符串访问?我想我需要\0在最后以某种方式指定,以便将字符用作字符串,但我找不到方法。

c string char strcmp

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

在linux上实现汇编64中的strcmp函数

我正在尝试实现strcmp,它是C程序集 64 中的一个函数,这是迄今为止我的工作代码:

global ft_strcmp

section .text

ft_strcmp:              ;rax ft_strcmp(rdi, rsi)
        mov     r12, 0  
loop:
        mov r13b, [rdi + r12]
        cmp byte [rdi + r12], 0
        jz exit
        cmp byte [rsi + r12], 0
        jz exit
        cmp r13b, byte [rsi + r12]
        jnz  exit
        inc r12
        jmp loop

exit:
        sub r13b, [rsi + r12]
        movsx rax, r13b
        ret 
Run Code Online (Sandbox Code Playgroud)

当我尝试用这个编译它时main.c

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

int     ft_strcmp(const char *str1, const char *str2);

int     main()
{
        const …
Run Code Online (Sandbox Code Playgroud)

c linux assembly nasm strcmp

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

标签 统计

strcmp ×10

c ×7

c++ ×3

string ×3

32bit-64bit ×1

assembly ×1

c-strings ×1

char ×1

if-statement ×1

linux ×1

nasm ×1

strlen ×1

strncmp ×1