Тема: Зчитування інформації з текстового файлу
В файлі потрібно знайти певну позначку, після чого зчитати з наступного рядка інформацію до наступної позначки.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Зчитування інформації з текстового файлу
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
В файлі потрібно знайти певну позначку, після чого зчитати з наступного рядка інформацію до наступної позначки.
Пане, це форум програмістів, і про це написано в шапці. Немає коду - немає відповіді... якщо, звісно, це не в розділі "пропоную роботу".
В файлі потрібно знайти певну позначку, після чого зчитати з наступного рядка інформацію до наступної позначки.
Arbeit macht frei
Пане, це форум програмістів, і про це написано в шапці. Немає коду - немає відповіді... якщо, звісно, це не в розділі "пропоную роботу".
Якщо ви програміст, ви повинні зрозуміти. Подивіться на розділ, в якому створена тема.
Є змінна символьного типу . ЇЇ потрібно віднайти в файлі, а потім зчитати після її інформацію. На приклад, ось частина коду:
/*hear must be the name of program*/
#include "function.hpp"//не звертайте увагу на бібліотеки
#include <iostream>
#include <iostream.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <fstream.h>
using namespace std;
ifstream tableFile("table.txt",ios::in|ios::nocreate|ios::noreplace);
ofstream outFile("out.txt",ios::out|ios::trunk);
unsigned short int nomberof;
char helppunct[128];
int main()
{
unsigned short int helpVariable;
char text[128];
do
{
cout<<"бла-бла:\n";
cin>>nomberof;
if(nomberof>=100)
{
cerr<<"Не існує бла "<<nomberof<<"!\n";
}
}while(nomberof>=100);
helppunct =nombero;
//Ось тут потрібно знайти позначку в файлі, яку вміщує в собі змінна helppunct
/*зчитати з неї "слово"*/
outFile<<text;
return 0;
}
Пане, це форум програмістів, і про це написано в шапці. Немає коду - немає відповіді... якщо, звісно, це не в розділі "пропоную роботу".
Якщо ви програміст, ви повинні зрозуміти. Подивіться на розділ, в якому створена тема.
Є змінна символьного типу . ЇЇ потрібно віднайти в файлі, а потім зчитати після її інформацію. На приклад, ось частина коду:
/*hear must be the name of program*/
#include "function.hpp"//не звертайте увагу на бібліотеки
#include <iostream>
#include <iostream.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <fstream.h>
using namespace std;
ifstream tableFile("table.txt",ios::in|ios::nocreate|ios::noreplace);
ofstream outFile("out.txt",ios::out|ios::trunk);
unsigned short int nomberof;
char helppunct[128];
int main()
{
unsigned short int helpVariable;
char text[128];
do
{
cout<<"бла-бла:\n";
cin>>nomberof;
if(nomberof>=100)
{
cerr<<"Не існує бла "<<nomberof<<"!\n";
}
}while(nomberof>=100);
helppunct =nombero;
//Ось тут потрібно знайти позначку в файлі, яку вміщує в собі змінна helppunct
/*зчитати з неї "слово"*/
outFile<<text;
return 0;
}
Я теж спробував вирішити цю задачу:
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char** argv) {
/* Поточний символ */
char current;
/* Покажчик для файлу, із яким ми будемо працювати */
ifstream file_ptr;
file_ptr.open("code.c");
current = 0;
if (file_ptr.is_open()) {
/* Зчитуємо по одному символу із файлу, доки не зустрінемо
* позначку кінця файлу */
while ( (current = file_ptr.get()) != EOF ) {
/* Якщо зустріли послідовність косої та зірочки - значить,
* що почався коментар */
if (current == '/' && (current = file_ptr.get()) == '*') {
cout << '/' << current;
while ((current = file_ptr.get()) != EOF) {
cout << current;
/* Якщо зустріли послідовність зірочки і косої -
* значить, що коментар закінчився */
if (current == '*') {
if ((current = file_ptr.get()) == '/') {
cout << current << "\n\n";
break;
} else {
cout << current;
}
}
}
}
}
} else {
cout << "Не вдалось відкрити файл для читання.\n";
return 1;
}
file_ptr.close();
return 0;
}
Вміст файлу code.c:
Вивід програми:
Чи можна якось краще вирішити цю задачу?
Я теж спробував вирішити цю задачу:
#include <iostream> #include <fstream> using namespace std; int main(int argc, char** argv) { /* Поточний символ */ char current; /* Покажчик для файлу, із яким ми будемо працювати */ ifstream file_ptr; file_ptr.open("code.c"); current = 0; if (file_ptr.is_open()) { /* Зчитуємо по одному символу із файлу, доки не зустрінемо * позначку кінця файлу */ while ( (current = file_ptr.get()) != EOF ) { /* Якщо зустріли послідовність косої та зірочки - значить, * що почався коментар */ if (current == '/' && (current = file_ptr.get()) == '*') { cout << '/' << current; while ((current = file_ptr.get()) != EOF) { cout << current; /* Якщо зустріли послідовність зірочки і косої - * значить, що коментар закінчився */ if (current == '*') { if ((current = file_ptr.get()) == '/') { cout << current << "\n\n"; break; } else { cout << current; } } } } } } else { cout << "Не вдалось відкрити файл для читання.\n"; return 1; } file_ptr.close(); return 0; }
Вміст файлу code.c:
▼Прихований текстВивід програми:
▼Прихований текстЧи можна якось краще вирішити цю задачу?
Дякую. Але якщо в файлі мільйони рядків, то такий спосіб займе надто багато часу. Чи не можноа знайти інший спосіб?
Ще запитання. Як створити файл з новим розширенням, своїм форматом, це можливо? Чи таке робить тільки якийсь там microsoft?
Створіть нову тему у відповідному розділі. А взагалі - просто берете і створюєте.
Створіть нову тему у відповідному розділі. А взагалі - просто берете і створюєте.
Це засмічує інформаційне поле форуму
Як створити файл з новим розширенням, своїм форматом, це можливо?
Можливо. Ви можете писати у файл з будь-яким розширенням будь-які дані — мова C вас у цьому не обмежує.
Чи вас цікавить можливість відкривати такий файл з допомогою своєї програми (напр., по дабл-кліку на іконці файла)? Для цього треба, щоб ваша програма приймала параметри (заголовок головної функції виглядатиме як int main(int argc, char** argv), отримані аргументи — кількість переданих параметрів програми й безпосередньо самі параметри в вигляді масиву рядків). Далі, коли ми спробуємо відкрити файл з новим розширенням, вінда запропонує вибрати для цього програму — вибираємо ту програму, яку написали. Ім'я файла передасться їй у вигляді рядка (тобто, міститиметься в argv[0], argc дорівнюватиме 1), далі в програмі можна відкрити файл із цим ім'ям і працювати з ним.
koala написав:Створіть нову тему у відповідному розділі. А взагалі - просто берете і створюєте.
Це засмічує інформаційне поле форуму
Так, обговорення не по темі засмічують інформаційне поле форуму. Тому створюйте нову тему.
Тему закрито у зв'язку з оффтопом і баном ТС.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися