我正在尝试从 .pgm 图像文件 (mars.pgm) 的标题中读取大小值,并使用 sscanf 将结果值分配给整数变量 u 和 v。
执行时,程序在第一行打印 P5 832 700 127,这是正确的(832 和 700 是我要挑选的大小值)。
在用于打印 u 和 v 变量的第二行中,打印了两个非常大的数字,而不是 832 和 700 值。
我无法弄清楚为什么这不能按预期工作。使用小型测试程序(位于帖子底部)时,sscanf 会像我预期的那样从字符串中挑选出值。
#include<stdio.h>
#include <string.h>
int main()
{
FILE *fin;
fin= fopen ("mars.pgm","r+");
if (fin == NULL)
{
printf ("ERROR");
fclose(fin);
}
int u,v,i,d,c;
char test[20];
for (i=0; i<=20; i++)
{
test[i]=getc(fin);
}
sscanf(test,"%d,%d,%d,%d",&c,&u,&v,&d);
printf("%s\n",test);
printf("%d %d",u, v);
fclose(fin);
}
小测试程序
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main(void)
{
int a;
char s[3];
s[0]='1';
s[1]=' ';
s[2]='2';
sscanf(s,"%d",&a);
printf("%d",a);
}