работа с потоками на С и С++
#include<fstream.h>
#include<iostream.h>
#include<stdlib.h>
//#include<alloc.h>
#include <conio.h>
#define NUM 5
//using namespace std;
void output(int& c,int& d,int i) //inspection and output information
{
if((c-4)*(c-4) + (d-4)*(d-4) <= 16)
cout << "’®çª* M" << i <<" ¯à¨**¤«¥¦¨â.\n";
else
cout << "’®çª* M" << i << " *¥ ¯à¨**¤«¥¦¨â.\n";
}
//------------------------------
void main ()
{
// for C
FILE* f1 = NULL;
int x,x1[NUM], y, y1[NUM];
int tochkaX[NUM], tochkaY[NUM];
char name1 [20], name2 [20];
printf("Vvedite imja faila\n");
scanf ("%s",name1);
printf("Proverka na prinadleschnosti tochek\n");
f1 = fopen (name1,"w");
for (int i = 0; i< NUM; i++)
{
printf("Vvedite x\n");
scanf ("%d",&x);
fprintf(f1,"%d",x);
printf("Vvedite y \n");
scanf ("%d",&y);
fprintf(f1,"%d",y);
}
fclose(f1);
f1 = fopen (name1,"r");
for (int j = 0; j < NUM; j++)
{
fscanf(f1,"%d", &x1[j]);
printf("%d \n",x1[j]);
fscanf(f1,"%d", &y1[j]);
printf("%d \n",y1[j]);
}
int m = 0;
while ( m < NUM)
{
output (x1[m],y1[m],m);
m++;
}
fclose(f1);
getch();
// for C++
/*
cout << "Programma proverki prinadleschnosti tochek dlja C++ \n";
cout << "Vvedite imja faila\n";
cin >> name2;
ofstream mystream (name2);
if (!mystream)
{
cout << "Cannot open file\n";
exit(1);
}
for (int q = 0; q < NUM; q++)
{ x=0;
cout << "Vvedite x\n";
cin >> x;
mystream << x;
y=0;
cout << "Vvedite y\n";
cin >> y;
mystream << y;
}
mystream.close();
ifstream mystream1 (name2);
if (!mystream1)
{
cout << "Cannot open file\n";
exit(1);
}
for (int t =0; t<NUM; t++)
{
mystream1 >> tochkaX[t];
mystream1 >> tochkaY[t];
// output (tochkaX[t],tochkaY[t],t);
}
int m = 0;
while (m <NUM)
{
output (tochkaX[m],tochkaY[m],m);
m++;
}
mystream1.close();
getch();
*/
}
вот код.
Vvedite imja faila
a.txt
Proverka na prinadleschnosti tochek
Vvedite x
4
Vvedite y
1
Vvedite x
2
Vvedite y
3
Vvedite x
4
Vvedite y
56
Vvedite x
7
Vvedite y
5
Vvedite x
4
Vvedite y
3
-1715105417
3
4198406
9460440
4201593
1245072
845666601
845655753
0
0
Точка M0 принадлежит.
Точка M1 не принадлежит.
Точка M2 не принадлежит.
Точка M3 принадлежит.
Точка M4 не принадлежит.
вот результат работы программы.
Значит вопрос в том какую бы использовать функцию по взятию числа из файла. ИЗ кода видно что при использовании fscanf это явно не прокатывает т.к. 1715105417
3
4198406
9460440
4201593
1245072
845666601
845655753
что это за числа непонятно.
Может кто что подскажет?
Возможно надо добавить пробелы в fprintf, чтобы числа не слитно в файл писались.
Код:
fprintf(f1,"%d ",x);
Код:
fscanf(f1,"%[COLOR=red]1[/COLOR]d", &x1[j]);
Код я сам писал.