.pgm 이미지 파일 (mars.pgm)의 헤더에서 크기 값을 읽고 sscanf를 사용하여 결과 값을 정수 변수 u 및 v에 할당하려고합니다..pgm 이미지 파일의 헤더를 읽습니다.
프로그램을 실행하면 P5 832 700 127이 첫 번째 줄에 인쇄됩니다 (832와 700은 선택하려는 크기 값입니다).
u 및 v 변수를 인쇄하기위한 두 번째 줄에는 832 및 700 값 대신 두 개의 매우 큰 숫자가 인쇄됩니다.
이것이 원하는대로 작동하지 않는 이유를 알 수 없습니다. 게시물의 하단에있는 작은 테스트 프로그램을 사용할 때 sscanf는 내가 예상했던 것처럼 문자열에서 값을 추출합니다. 예를 들어, 0으로 변수를 초기화하고, 그들이 한 후 읽기 동작을 들고 어떤 값을 확인 :
#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);
}
값이 쉼표로 구분되어 있으며 형식 문자열이 지정되어 있습니까? – Mauren
'fgets()'함수를 사용하여 입력 파일의 첫 x 문자를 직접 읽을 수 있도록 코드를 변경할 수도 있습니다. – Mauren