相关疑难解决方法(0)

如何正确比较字符串?

我试图让一个程序让用户输入一个单词或字符,存储它,然后打印它,直到用户再次键入它,退出程序.我的代码看起来像这样:

#include <stdio.h>

int main()
{
    char input[40];
    char check[40];
    int i=0;
    printf("Hello!\nPlease enter a word or character:\n");
    gets(input);
    printf("I will now repeat this until you type it back to me.\n");

    while (check != input)
    {
        printf("%s\n", input);
        gets(check); 
    }

    printf("Good bye!");


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

问题是我不断打印输入字符串,即使用户输入(检查)与原始(输入)匹配.我比较错误吗?

c string strcmp

168
推荐指数
6
解决办法
41万
查看次数

相互比较 char*

我目前有一个名为 getResult 的方法,它返回 const char* 现在我正在做这样的事情

if(getResult=="Something")
{
  ...
}
Run Code Online (Sandbox Code Playgroud)

然而,这种类型的比较似乎不起作用。“Something” 不也是一个 const char 指针吗?或者在这种情况下是比较地址?

c++ visual-studio-2010

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

C字符串比较失败?

可能重复:
C字符串 - 使用等式运算符==用于比较两个字符串是否相等

我有以下代码;

#include <stdio.h>
#define MAXLINE 2600
char words[4][MAXLINE];
int i;

int main(){

    printf("Enter menu option: ");

    scanf("%s", words[i]);

    printf ("\n %s was entered!", words[i]);

    if (words[i]=="help"){
        printf("\nHelp was requested");
    } 
    else 
    { 
        printf("\nCommand not recognized!"); 
    }

}
Run Code Online (Sandbox Code Playgroud)

if语句中的数组求值不起作用.我显然做错了什么.有人可以向我解释一下吗?

c unix string-comparison

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

C代码,似乎是在跳过if语句

首先,我不是要求任何人为我编写程序或为我做作业......我有一个错误,我无法弄清楚是什么导致它,以及在哪里寻找解决它.

所以我试图创建一个程序,它将从命令行获取命令和输入文件,并根据命令选择执行以下几个函数之一:输入文件的行,计算单词输入文件,或检查输入文件的回文,然后将回文(如果有的话)与字典文件进行比较.

这是代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>

void usage(char *prog_name) //usage file if input format is wrong
{
    printf("Usage: %s, <-h>|<-l>|<-w>|<-p>, <filename>\n", prog_name);
    exit(0);
}

void help(char *prog_name, char *filename) //help file for -h option
{
    printf("Welcome to the help file\n");
    printf("For number of lines, enter: <%s>, <-l>, <%s>.\n", prog_name, filename);
    printf("For number of words, enter: <%s>, <-w>, <%s>.\n", prog_name, filename);
    printf("To list the palindromes in alphabetical order, print the …
Run Code Online (Sandbox Code Playgroud)

c if-statement skip

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

从主C++中解析参数

可能重复:
C字符串 - 使用等式运算符==用于比较两个字符串是否相等

基本问题在这里.我正在用g ++编译这个程序并使用单个-r参数(./a.out -r)运行它,但是它不输出下面指定的cout语句.这段代码有什么问题吗?

#include <string>
using namespace std;

int main(int argc, char* argv[]) {

    if (argv[1] == "-r" ) {
        cout << "First arg is -r" << endl;
    }

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

c++ program-entry-point argv

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

如何比较C中的字符串条件

我在比较C中的两个字符串时遇到问题,看它们是否相等.

switch(i) {
case 1:
  printf("Got in case 1.  TextA=%s    word=%s \n",TextA,word);
  if(TextA == word) {       
    SubTypeOption = 1;
    printf("SubTypeOptioon = %d",SubTypeOption);
  }
Run Code Online (Sandbox Code Playgroud)

在我的输出中,我得到"得到的情况1. TextA = SupTypeA字= SupTypeA SubTypeOption = 0"//所以它没有被改变

c string

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

我如何比较2个unsigned char数组?

我有一台服务器计算图像的散列并将图像和散列发送到客户端.我让客户端计算它接收的图像的哈希值.这是基本设置:

服务器

unsigned char sum[MD5_DIGEST_LENGTH];
md5sum(tdata, sum);
w = write(newsockfd,sum,MD5_DIGEST_LENGTH);
Run Code Online (Sandbox Code Playgroud)

客户

unsigned char ssum[MD5_DIGEST_LENGTH];
w = read(sockfd,ssum,MD5_DIGEST_LENGTH);
unsigned char sum[MD5_DIGEST_LENGTH];
md5sum(imgpath, sum);
int j;
for (j = 0; j < MD5_DIGEST_LENGTH; j++)
    printf("%02x", ssum[j]);
printf("\n");
printf("CLIENT CHECKSUM: ", sum);
    for (j = 0; j < MD5_DIGEST_LENGTH; j++)
        printf("%02x", sum[j]);
printf("\n");
Run Code Online (Sandbox Code Playgroud)

输出完全相同,但如何使用if语句检查它们的相等性?如果我做:

if (sum == ssum)
Run Code Online (Sandbox Code Playgroud)

它总是评估为假.

c hash

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

C字符串 - 相同,不匹配?

C得到一个小问题.限制自己使用简单的C(即操作系统指令),两个字符串似乎不一样.这是我的代码:

    char inputData[256];
    int rid;
    rid = read(0,inputData,256);
    // Strip input
    char command[rid];
    int i;
    for (i = 0; i<=rid-2; i++) {
        command[i] = inputData[i];
    }
    command[rid-1] = '\0';
    if (command == "exit") {
        write(1,"exit",sizeof("exit"));
    }
Run Code Online (Sandbox Code Playgroud)

现在,如果用户在查询时进入"退出"并且点击进入,则检测到"退出"的if永远不会运行.有任何想法吗?

谢谢,

编辑:我在去的时候提交git,所以当前的版本可以在github.com/samheather/octo-os找到.这显然不是完整的代码,但它证明了这个问题.

c string posix compare

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

参数解析错误

我试图用我的代码解析我的控制台应用程序中的运行参数:

int _tmain(int argc, _TCHAR* argv[])
{
    if(argv[1] == _T("arg1")) cout<<"Argument1 was passed";
    _getch();
    return 0;

}
Run Code Online (Sandbox Code Playgroud)

我的代码不起作用.我的意思是,它运行,但控制台是空的.我正在使用Use Unicode Character SetVisual Studio 2012中的选项进行编译(在Windows 7上).我的错在哪里?!

c++ console command-line-arguments

-3
推荐指数
2
解决办法
365
查看次数