我对strcmp函数有问题(同样的问题是这里,但没有很好的答案)。如果比较两个相同的字符串,但其中一个字符串来自结构,则该字符串被错误地“翻译”为程序集代码。结构上的每一个char[]都是随机的3个字符。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)
}发布于 2013-12-26 00:00:35
在比较之前,尝试删除字符串末尾的换行符,下面是一个简单的函数:
void removeNLine(char* string)
{
int i ;
for(i = strlen(string) ; i > 0 ; i--)
if(string[i] == '\n')
string[i] = '\0';
}发布于 2013-12-25 23:05:36
如果我没有弄错函数,fgets也会将新行字符读入数组中。因此,我认为两个数组不相等的原因是,使用fgets读取的一个数组包含新的行字符。
https://stackoverflow.com/questions/20777463
复制相似问题