Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2014, 17:30   #1
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию Как можно скопировать слово из файла в Си?

У меня есть функция посимвольного копирования,а как указать,чтобы она копировала до пробела ' ', передавала слово в другую функцию,и потом копировала слова с текста дальше?
Код:
int ReadFile(char *name, char *p)   
{
	FILE *f;
	char num;
	int i=0;
	f=fopen(name,"rt");
	if(f==NULL)             
		return NULL;	    

	while((num=getc(f))!=EOF)
	
	{    //посимвольно копирует данные с файла
	
		*p++=num;
		*p=0;
		
	}
	fclose(f);   
	return 1;    
}
Вероника99 вне форума Ответить с цитированием
Старый 12.01.2014, 18:25   #2
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

А для чего тогда Вам строка p ?

Проблема в том, что нам заранее неизвестны размеры слов, т.е. не понятно каких размеров резервировать строки для копирования слов из файла.
Я пока что вижу один более менее логичный вариант - бежите по файлу, считаете размеры всех слов. Но здесь встает другая проблема, нам неизвестно количество этих самых слов.
Я предлагаю "пойти в гору" :
1) считаем количество слов
2) выделяем массив размером равным количеству этих слов и в каждый из элементов данного массива пишем длины всех соответствующих строк.
3) ориентируясь на размеры слов - выделяем строки, пишем туда символы и передаем в нужную функцию.

Но если Вы заранее уверены, что текст в файле не превышает по длине строку p. Тогда все немного проще...
Но Вы об этом ничего не сказали.

P.S.
Код:
*p++=num;
*p=0;
Можно объяснить логику этих действий?

Последний раз редактировалось Базиля; 12.01.2014 в 18:34.
Базиля вне форума Ответить с цитированием
Старый 13.01.2014, 06:05   #3
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

а посимвольно это обязательное условие?
почему бы не использовать потоки?
там без всяких изобретений чтение идет до разделяющего символа...
Код:
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
  
  fstream file_in;
  file_in.open("input.txt", fstream::in);
  
  string a;
  file_in >> a;
  cout<<a<<endl;

  file_in.close();
   return 0;
}
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!
SaLoKiN вне форума Ответить с цитированием
Старый 13.01.2014, 07:09   #4
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

SaLoKiN
Потому что C
Базиля вне форума Ответить с цитированием
Старый 13.01.2014, 09:17   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
int ReadFile(char *name, char *p)   
{
	FILE *f;
	char num;
	int i=0;
	f=fopen(name,"rt");
	if(f==NULL)             
		return NULL;	    
char s[100]={0};int i=0;
	while((num=getc(f))!=EOF)
	
	{  if(num==' ' && i){s[i]=0; Какая-То-Функция(s); i=0;}  s[i++]=num;
		
	}
	fclose(f);   
	return 1;    
}
Идея ясна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как можно скопировать файл (изображение) с жёсткого диска в другое место через Pascal? wowiku Паскаль, Turbo Pascal, PascalABC.NET 1 15.04.2012 17:02
как скопировать строки из одного файла в другой serg_k Microsoft Office Excel 1 07.06.2011 11:16
Как можно получить кодовое слово videolord Общие вопросы по Java, Java SE, Kotlin 1 27.05.2011 21:23
как можно скопировать строки? zander Microsoft Office Excel 2 25.04.2011 23:23