首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较chars[]不起作用

比较chars[]不起作用
EN

Stack Overflow用户
提问于 2013-12-25 22:59:37
回答 2查看 87关注 0票数 1

我对strcmp函数有问题(同样的问题是这里,但没有很好的答案)。如果比较两个相同的字符串,但其中一个字符串来自结构,则该字符串被错误地“翻译”为程序集代码。结构上的每一个char[]都是随机的3个字符。strcmp.asm图片

代码语言:javascript
复制
#define CONS 60

typedef struct LinkCity{
    char city[CONS];           // i get this char[] from file by using fgets()
    struct LinkCity* next;
} tLinkCity;
/***************************************/
    typedef struct {
        int NumberOfCity;
        tLinkCity* Link;
        double** distances;
    } tDatabaze;
/***************************************/
int GetIndexOfCity(tDatabaze* db, char * city){

    printf("%s %s", db->Link->city, city); //   > Barcelona\n Barcelona (yes, here is a newline)
    str = strcmp(db->Link->city, city);    //   str = 1  (=it should be 0)
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-26 00:00:35

在比较之前,尝试删除字符串末尾的换行符,下面是一个简单的函数:

代码语言:javascript
复制
void removeNLine(char* string)
{
        int i ;
        for(i = strlen(string) ; i > 0 ; i--)
               if(string[i] == '\n')
                     string[i] = '\0';
}
票数 1
EN

Stack Overflow用户

发布于 2013-12-25 23:05:36

如果我没有弄错函数,fgets也会将新行字符读入数组中。因此,我认为两个数组不相等的原因是,使用fgets读取的一个数组包含新的行字符。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20777463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档