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 は 2 つのループ反復を通過します。

4

2 に答える 2

4

strcmp()は、等しい場合は0を返します。一方が他方よりも大きいか小さい場合、あなたは戻ってきます。

于 2011-04-23T22:34:35.287 に答える
3

あなたがしたいstrcmp(filename, &data[i]) == 0

0は文字列間の一致を示し、falseと評価されます。

于 2011-04-23T22:34:50.653 に答える