fp=fopen ("results.txt","w+"); // Open file to write results
if(fp==NULL) cout << "Error! Can't open file!\n";
else
{
cout << "\n\nWriting to file...";
for(i=0;i<numofexp;i++)
{
sprintf(str,"%+5.5f ",y);
cout<<str;
while(str[j]!='\0'){fputc(str[j],fp);j++;}
j=0;
if((i%4)==3) fputc('\n',fp);
}
}
fclose(fp);
cout << "\nWriting complete!";
Си. Печать массива double'ов в файл и обратно.
Желательно, чтобы в файле числа хранились в виде текста, что бы можно было рамочки псевдографикой там сделать.
Заранее спасибо за помощь.
Печать в файл:
Код:
и, соответственно чтение из файла:
Код:
fp=fopen ("results.txt","r");
if(fp==NULL) cout << "Error! Can't open file!\n";
else
{
while(c=getc(fp)!= EOF){cout<<c;}
}
fclose(fp);
if(fp==NULL) cout << "Error! Can't open file!\n";
else
{
while(c=getc(fp)!= EOF){cout<<c;}
}
fclose(fp);
Так вот выводится просто куча мордочек(символ мордочки), а не цифры и все отстальное.
Код:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void main(int argc, char *argv[])
{
double double_array[5] = { -1.2323e+3, 2.334, 3.034e-1, 4.34, 54.1 };
ofstream output(L"results.txt", ios_base :: out | ios_base::trunc);
if (!output.is_open()) return;
output.setf(ios_base::fixed);
for (int n = 0 ; n < 5 ; n++)
output << double_array[n] << endl;
output.close();
}
#include <fstream>
#include <string>
using namespace std;
void main(int argc, char *argv[])
{
double double_array[5] = { -1.2323e+3, 2.334, 3.034e-1, 4.34, 54.1 };
ofstream output(L"results.txt", ios_base :: out | ios_base::trunc);
if (!output.is_open()) return;
output.setf(ios_base::fixed);
for (int n = 0 ; n < 5 ; n++)
output << double_array[n] << endl;
output.close();
}
Чтение из файла:
Код:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void main(int argc, char *argv[])
{
ifstream input(L"results.txt", ios_base::in);
if (!input.is_open()) return;
while (!input.eof())
{
string value; input >> value;
if (!value.empty())
cout << value << endl;
}
input.close();
}
#include <fstream>
#include <string>
using namespace std;
void main(int argc, char *argv[])
{
ifstream input(L"results.txt", ios_base::in);
if (!input.is_open()) return;
while (!input.eof())
{
string value; input >> value;
if (!value.empty())
cout << value << endl;
}
input.close();
}
PS. Модераторам - почему ios_base :: out не отображается.
Код:
ios_base :: out
Код:
ios_base :: out
потому что без пробела написал, а :о это символ смайлика. почему в тэгах код это происходит это вопрос к админу, не ко мне
P.S. Я могу весь код лабы привести, если надо.
Код:
#include <stdio.h>
void main(int argc, char* argv[])
{
double double_array[5] = { -3.2323e+3, 2.334, 3.034e-1, 4.34, 54.1 };
FILE* output = fopen("results.txt", "w+");
if (output == 0) return;
for (int n = 0 ; n < 5 ; n++)
fprintf(output, "%f\n", double_array[n]);
fclose(output);
}
void main(int argc, char* argv[])
{
double double_array[5] = { -3.2323e+3, 2.334, 3.034e-1, 4.34, 54.1 };
FILE* output = fopen("results.txt", "w+");
if (output == 0) return;
for (int n = 0 ; n < 5 ; n++)
fprintf(output, "%f\n", double_array[n]);
fclose(output);
}
Чтение из файла:
Код:
#include <stdio.h>
void main(int argc, char* argv[])
{
FILE* input = fopen("results.txt", "r");
if (input == 0) return;
while (!feof(input))
{
char szBuffer[32] = { 0 };
fscanf(input, "%s", &szBuffer);
printf("%s\n", szBuffer);
}
fclose(input);
}
void main(int argc, char* argv[])
{
FILE* input = fopen("results.txt", "r");
if (input == 0) return;
while (!feof(input))
{
char szBuffer[32] = { 0 };
fscanf(input, "%s", &szBuffer);
printf("%s\n", szBuffer);
}
fclose(input);
}
Спасибо большое Damarus! Все работает, буду сдавать. Но если тебе не сложно, то скажи, что в моем коде неправильно.
Код:
while(c = getc(fp) != EOF) { cout << c; }
У тебя в c записывается не значение, возвращаемое getc(fp), а логический результат сравнения getc(fp) != EOF. Исправить просто:
Код:
while((c = getc(fp)) != EOF) { cout << c; }
Результат логического выражения 0 или 1, так почему мордочки?
Потому, что код мордочки равен 1.
Цитата:
Originally posted by Damarus
Можно проще. Запись в файл:
PS. Модераторам - почему ios_base :: out не отображается.
Можно проще. Запись в файл:
Код:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void main(int argc, char *argv[])
{
ofstream output(L"results.txt",[color=green] ios_base::out[/color] | ios_base::trunc);
#include <fstream>
#include <string>
using namespace std;
void main(int argc, char *argv[])
{
ofstream output(L"results.txt",[color=green] ios_base::out[/color] | ios_base::trunc);
PS. Модераторам - почему ios_base :: out не отображается.
меня на днях посетила неплохая идея, почему бы не отключать в постах с кодом смайлики, если возникают проблемы
Цитата:
Originally posted by OlgaKr
меня на днях посетила неплохая идея, почему бы не отключать в постах с кодом смайлики, если возникают проблемы
меня на днях посетила неплохая идея, почему бы не отключать в постах с кодом смайлики, если возникают проблемы
Хм...
Код:
ios_base::out