【发布时间】:2013-12-26 08:00:35
【问题描述】:
我对 strcmp 函数有疑问(同样的问题是 here,但没有好的答案)。如果我比较 2 个相同的字符串,但一个字符串来自结构,则该字符串被错误地“翻译”为汇编代码。结构中的每个 char[] 都是随机的 3 个字符。 Picture of strcmp.asm
#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)
}
【问题讨论】:
-
当您使用
fgets()检索字符串时,您是否还记得从末尾删除换行符?tSeznamMest是什么,db->Link甚至分配在哪里?发布一个重现问题的真实示例。 -
这和组装有什么关系?
-
抱歉 tSeznamMest,已编辑...
-
字符串中可能有非打印字符。
strlen()对这两个字符串说什么? -
如果您的问题是关于您自己的 asm 函数,您应该发布它,而不是 C 代码。