2011-04-23 57 views
0
int compare_filenames(char* data, char* filename){ 
    //note: we only have 31 directory/file entries within a block 
    int i; 
    int offset; 
    //printf("argument %s\n", filename); 
    for(i = 0; i < BLOCK_SIZE; i+=16){ 
     if(strcmp(filename, &data[i])){ 
      offset = i + 12; 

      return data[i+12];// double check here 
     } 

    } 
    return ERR_FILE_NOT_FOUND; //didn't find it within 
} 

一些振振有辭STRCMP去通過兩個循環迭代,即使第一個元素是正確的開頭STRCMP不工作,發現它在第二循環迭代

+2

我要去猜'的strcmp()'不破。 [編程的第一條規則:這是你的錯](http://www.codinghorror.com/blog/2008/03/the-first-rule-of-programming-its-always-your-fault.html) – 2011-04-23 22:31:53

+0

除了答案如下:你的局部變量'offset'不被使用。現在可能是開始使用「const」的好時機。 12和16應該被命名爲常量。想知道你的公司需要更多的代碼審查。 – 2011-04-23 23:14:57

回答

4

STRCMP()返回0時,他們是平等的。如果一個人比另一個人大或小,你會回來。

3

你想做strcmp(filename, &data[i]) == 0

0表示字符串,其計算爲false之間的匹配...