【问题标题】:Debug Assertion Failed! (Not Normal)调试断言失败! (不正常)
【发布时间】:2015-06-24 18:16:57
【问题描述】:

好的,所以我的问题是断言失败。我不明白的是我的程序正确地从文件输入到数组,然后打印到屏幕上,但仍然显示这个错误,我就是想不通。这个程序还有更多内容,所以请忽略未使用的功能。

我的代码如下:

#include <stdio.h>
#include <stdlib.h>
#define MAX 272

FILE* csis;

void processFile(char line[]);
int cipher();

int main(void) {
    char line[MAX];

    processFile(line, MAX);

    fclose(csis);
    return (0);
}
void processFile(char line[]) {
    FILE* fp;
    int i = 0;

    if (!(fp = fopen("congress.txt", "r"))) {
        printf("File could not be opened for input.\n");
        exit(1);
    }

    fseek(fp, 0, SEEK_END);
    fseek(fp, 0, SEEK_SET);
    for (i = 0; i < MAX; ++i) {
        fscanf(fp, "%c", &line[i]);
        printf("%c", line[i]);
    }

    fclose(fp);
}
int cipher() {}

【问题讨论】:

  • 向我们显示错误消息
  • 哪一行触发了断言失败?

标签: c visual-studio debugging assertion


【解决方案1】:

看起来您正在关闭一个未打开的文件句柄,将来您可以将文件句柄初始化为 NULL,然后在关闭前进行测试。

FILE *csis = NULL;
...
if (csis)
    fclose(csis);

【讨论】:

  • 艾伦 我不能投票给你 对不起,这是我的问题。所以非常感谢你纠正我的愚蠢! :D
【解决方案2】:

我想你是说

fscanf(fp, "%s", &line[i]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多