【发布时间】:2019-10-19 14:24:54
【问题描述】:
我正在尝试从文件中读取一些整数,但是在 Visual Studio Code 2013 中运行它时出现错误“调试断言失败!程序:...cuments\visual studio 2013\Projects.... \strtol.c 线路:94 表达式:nptr!=NULL
但是,相同的代码在 CodeBlocks 中运行良好。我最近才开始使用 Visual,所以我不太擅长。 这是我要阅读的文件的内容: 11 7 4 1 4 0 10 12 1 3 9
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *f;
void main(void) {
int v[30], i = 0;
char line[30], *p;
f = fopen("Text.txt","r");
fgets(line, 30, f);
p = strtok(line, " ");
v[i] = atoi(p);
i++;
while (p != NULL){
p = strtok(NULL," ");
v[i] = atoi(p);
i++;
}
int n = i-1;
for (i = 0; i < n; i++)
printf("%d ", v[i]);
}
【问题讨论】:
-
错误检查,总是错误检查!文件打不开怎么办?如果阅读失败怎么办?如果
strtok返回一个空指针怎么办? -
如果文件无法打开,
f可能为 NULL,strtok可能会崩溃。如果第一行没有空格,strtok将返回 NULL,atoi可能会崩溃。尝试使用 Visual Studio 调试器单步执行代码并检查返回值,看看出了什么问题。也按照@Someprogrammerdude 的建议去做,并在代码本身中检查您的返回值。 -
Visual Studio Code 和 Visual Studio 2013 不是一回事,甚至不相关。 Visual Studio Code 不包括 Visual C++ 编译器。您使用的是什么编译器而不是什么 IDE?
-
当这段代码在调试器中停止时(你在调试器中运行它对吗?),查看调用堆栈窗口以确定它在到达
strtol()之前在代码中的位置.
标签: c visual-studio-2013 file-read