gpt4 book ai didi

c - 防止c中的文件中的字符被写出

转载 作者:行者123 更新时间:2023-11-30 19:08:03 25 4
gpt4 key购买 nike

我正在尝试用c编写一个程序来写出一些字符串,单词,字符等...该程序的要点是允许写入所有内容,但是程序的前两个字节不能包含字符“MZ”。我是 c 和指针的新手,这是我尝试过的:

方法1:这给了我编译错误......

    else if (offset == 0L){                                                                                                                │  write_file_at(f, "MZ", 2, BEGINNING_OF_FILE, 0L);                                           
│ fs_print_error();
if(!strncmp(((char*)data)[0], "M", 1)){ │ printf("\n\n");
if(offset == 1L && !strncmp(((char*)data), "Z", 1)){ │
fserror = ILLEGAL_MZ; │// Printf("Test case 3, write Z first\n");
} │// write_file_at(f, "Z", 1, BEGINNING_OF_FILE+1, 0L);
} │// fs_print_error();
} │// write_file_at(f, "M", 1, BEGINNING_OF_FILE, 0L);
│// fs_print_error();
else if (offset == 1L){ │

if(!strncmp(((char*)data), "Z", 1)){ │
if(offset == 0L && !strncmp(((char*)data), "M", 1)){ │ printf("Closing file...\n");
fserror = ILLEGAL_MZ; │ close_file(f);
} │ fs_print_error();
} │ return 0;
}

这是我尝试过的另一件事,但没有运气(至少它符合哈哈哈):

 char *ptr = NULL;                                                                                                                      │                                                                                                    char *buffer = (char*) data;                                                                                                           


read_file_from(file, ptr, 2, BEGINNING_OF_FILE, 0L); │ printf("Test case: mz is lower cased\n");
char *buffer2 = (char*) ptr;//data already written in file │ write_file_at(f, "mz", 2, BEGINNING_OF_FILE, 0L);
│ fs_print_error();
│ printf("\n\n");
if(buffer2[0] == 'M'){ │
if(buffer[1] == 'Z'){ │
fserror = ILLEGAL_MZ; │ Test Case
} │ printf("Test case: write Z in the second byte first, then write M in the first byte\n");
} │ write_file_at(f, "Z", 1, BEGINNING_OF_FILE, 1L);
if(buffer2[0] == 'M'){ │ fs_print_error();
if(buffer[1] == 'Z'){ │ write_file_at(f, "MZ", 2, BEGINNING_OF_FILE, 0L);
fserror = ILLEGAL_MZ; │ fs_print_error();
} │ printf("\n\n");
}

*这里还注意到read_file_from是我教授给出的方法,参数如下:

unsigned long read_file_from(File file, void *data, unsigned long num_bytes, SeekAnchor start, long offset)

任何帮助将不胜感激,谢谢!!

顺便说一句,Linux 用户永远不应该喝酒和root!

最佳答案

做起来更清晰

if(buff[0] == 'M' && buff[1] == 'Z')....

这是惯用的 C 方法。由于您没有给出实际问题,因此很难给出更好的答案

关于c - 防止c中的文件中的字符被写出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46059528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com