c语言 - 在 2 个 printf() 之间编程错误



希望有人能帮忙。我让这个程序完美地运行,把几行代码从一个函数移到另一个函数,然后它就崩溃了。

我从函数的顶部包含了下面的一个片段,直到segfault。它很高兴地输出"我们到达这里了吗?"但不是下一个语句,我花了很多时间试图弄清楚这一点,以至于我不记得我必须从

开始的工作构建

它(至少下面的部分)应该将整个文本文件复制到字符串

这个故事的寓意:有效的代码比"正确"的代码更好,在你试图调整它之前,总是复制有效的代码。

void validateFile(FILE* file, char** menuStore, char** submenuStore)
{
    char* temp = NULL;
    size_t size;
    boolean flag = true;
    char first;
    /*Loop Counter*/
    int i;
    fseek(file, 0, SEEK_END);
    size = ftell(file) * sizeof(char);
    fseek(file, 0, SEEK_SET);
    if ((temp = malloc(size)) == NULL)
    {
        printf("nUnable to allocate Memory, Program exiting");
        exit(EXIT_FAILURE);
    } else
    {
        for (i = 0; i < (size / sizeof(char)); i++)
        {
            temp[i] = fgetc(file);
        }
        printf("n did we get here?");
        printf("nFile loaded, validating...");

在读取文件时不应该使用这样的循环-

for (i = 0; i < (size / sizeof(char)); i++)
{
    temp[i] = fgetc(file);
}

在读取文件时应该检查EOF条件-

i=0;
while((temp[i]=fgetc(file))!=EOF)
     i++;

并使字符串结束为。那是更好的方法。

temp[i]='';

最新更新