0
我編寫了一個程序來讀取文本文件中的值,並將它們作爲demo的像素值處理。我的任務是掃描像素位置的值,如果值爲行值更大比2或列值大於1,則會打印「無效像素位置\ n」,然後「退出按\」q \「或繼續下一個位置按\」c \「。 。將掃描輸入現在的問題是,如果我輸入無效的值,例如3,5它打印的printf()語句兩個時間,然後在這裏談到的scanf()的函數 是我的代碼: -從文本文件中獲取演示的像素值
#include"stdio.h"
#include"stdafx.h"
#include"conio.h"
int r,c,check;
int main()
{
FILE *p;
char l[3],m[3],n[3],i,j,k,a;
p=fopen("s.txt","r+");
goto tab;
// int r,c,check;
tab:
{
while(1)
{
fseek(p,0,SEEK_SET);
printf("enter the position\n");
scanf("%d\n%d",&r,&c);
while((r>2)|(c>1))
{
printf("invalid pixel position\n");
printf("to exit press \"q\" or to continue for next position press \"c\":-\n");
scanf("%c",&check);
if(check=='c')
{
goto tab;
}
else if(check=='q')
{
return 0;
}
}
printf("you ask for pixel %c %c- ");printf("%2d%2d\n",r,c);
for(k=0;k<=r;k++)
{
for(i=0;i<=c;i++)
{
for(j=0;j<3;j++)
{
fread(&l[j],sizeof(a),1,p);
fread(&m[j],sizeof(a),1,p);
fread(&n[j],sizeof(a),1,p);
fread(&a,sizeof(a),1,p);
}
}
}
for(i=0;i<3;i++)
{
if(i==0)
{
printf(" red= %c%c%c",l[i],m[i],n[i]);
}
if(i==1)
{
printf(" green= %c%c%c",l[i],m[i],n[i]);
}
if(i==2)
{
printf(" blue= %c%c%c\n",l[i],m[i],n[i]);
}
}
}
}
fclose(p);
getch();
}
擺脫goto語句和重構代碼。 – this
...並正確格式化您的代碼。 –