今天在处理文本文件读取时候遇到Run-Time Check failure问题,问题起因如下:
文件头中包含了图像的width, height, maxval信息,我准备通过fscanf()函数将这三个值读取出来,代码为:
uint16_t width, height, maxval;
fscanf(in_file, "%d%d%d", &width, &height, &maxval);
很简单的两行代码,但是程序执行完毕后报错了。
网上查到的这个问题可能原因是数据越界,但我很纳闷,简单的读取值怎么会出错呢?
然后,一个偶然的想法,将uint16_t改成int,程序就正常通过了!!!我竟然花了一个下午想这其中可能出错的原因,还想着换成fread, fgets等其他函数,泪奔。
好吧,最好可以正确运行的代码是:
int width, height, maxval;
fscanf(in_file, "%d%d%d", &width, &height, &maxval);