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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2011, 12:55   #1
NickolayNest
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 40
Вопрос создать файл последовательного доступа целых чисел и поменять первую и последнюю компоненты

Здравствуйте!
Пишу программу на СИ, записывающую в файл последовательного доступа с клавиатуры целые числа. В этом файле необходимо поменять местами первую и последнюю компоненты. Распечатать файл до и после преобразования.

Создал файл без проблем, записал в него числа, но при попытке запомнить первое число происходит бесконечный цикл. Вот программа:
Цитата:
Код:
#include <stdio.h>
#define name "Myfile.txt"

main(){
	int n=0,i,c,next;
	char firstel,lastel;
	FILE *fp;
	fp = fopen(name, "wt");  //открытие файла для записи
	printf("Введите общее колличество значений:\n");
	scanf("%d",&n);
	//Запись в файл:
	for (i=0;i<n;i++)
        {
		printf("Введите следующее значение:\n");
		scanf("%d",&next);
	  	fprintf(fp,"%-5d", next);
	}
	fclose(fp);

	 //вывод содержимого файла на консоль. 
        fp = fopen(name,"r");
        c = getc(fp);
        printf("Файл содержит до обработки:");
        while (c!= EOF)
        {
   	     putchar(c);
	     c = getc(fp);
        } 
        fclose(fp);
        printf("\n");

  //Копирование первой компоненты файла:
   fp = fopen(name,"r");
   c = getc(fp);
   
   while(c != ' ' || c!='\n' || c!='\t' || c != EOF)
   {
	firstel = c;	//здесь проблема
	c = getc(fp);    //бесконечный цикл
   }
   fclose(fp);
   return 0;
}
догадываюсь, что строка firstel = c; неправильная, т.к. "с" считывает посимвольно, и я присваиваю firstel один символ, если число будет состоять из больше 1 цифры, получится неверный результат. подскажите как исправить эти ошибки!!!
Большое спасибо!!

Последний раз редактировалось NickolayNest; 17.12.2011 в 13:05.
NickolayNest вне форума Ответить с цитированием
Старый 17.12.2011, 14:07   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,327
По умолчанию

NickolayNest, а что вы хотите от цикла while? Если вы хотите пропускать символы пустого пространства и считывать из файла числа, то используйте fscanf(fp, %d, val); А может лучше сохранить числа в массив на этапе считывания с терминала, а потом поменять первый и последний элементы массива и вывести в файл?
8Observer8 вне форума Ответить с цитированием
Старый 17.12.2011, 15:08   #3
NickolayNest
Пользователь
 
Регистрация: 16.10.2011
Сообщений: 40
По умолчанию

спасибо за помощь!! получилось с fscanf!! пожалуй предложенный вариант более удобный!!
NickolayNest вне форума Ответить с цитированием
Старый 17.12.2011, 15:33   #4
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,327
По умолчанию

На здоровье Рад был помочь
8Observer8 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан файл вещественных чисел. Создать файл целых чисел, содержащий номера всех локальных максимумов в порядке возрастания zzz6 Помощь студентам 1 04.07.2011 12:59
создать файл целых чисел Aimet Паскаль, Turbo Pascal, PascalABC.NET 0 16.06.2011 21:00
Создать файл целых чисел с данным именем и записать в него N первых положительных четных чисел prelest' Паскаль, Turbo Pascal, PascalABC.NET 4 01.06.2011 10:27
Создать двоичный файл, записать n целых чисел. Из файла создать массив, элементы числа-палиндромы (на C) Simak63 Помощь студентам 0 30.03.2011 21:06
Записать в файл последовательного доступа N натуральных чисел: a1, a2, …, an JiLiYa Паскаль, Turbo Pascal, PascalABC.NET 1 28.12.2008 14:37