Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поменять местами первое слово со вторым.. 3 и 4 5 
:(
    Опции темы
kiruka4
Дата 22.12.2011, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 22.12.2011

Репутация: нет
Всего: нет



Добрый день. Учимся сейчас программировать в UNIX. Такая вот проблема:

Задание: поменять местами первое слово со вторым.. 3 и 4 5 и 6 7 и 8

Я написал вот такой вот код:
Код

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
int ldr2,ldr2new;
int main(int argc,char *argv[])
{
ldr2=open("lr2.txt",O_RDONLY);
ldr2new=creat("lr2new.txt",O_RDWR);
char a[200];
char b[200];
int i=0;int j=0;
char buff; 
while (read(ldr2,&buff,1)>0){
do {(read(ldr2,&buff,1));
    a[i]=buff;i++;}
while (buff!='\n');
 
do {(read(ldr2,&buff,1));
    b[j]=buff;j++;}
while (buff!='\n');
 
write(ldr2new,b,strlen(b));
write(ldr2new,a,strlen(a));
printf("%s",a);
printf("%i",i);
i=0;
j=0;}
close(ldr2);
close(ldr2new);
return (0);}

Но он не коректно выводит. А если перед первым и третим словом поставлю лишний пробел - то все ок. Кто-то знает в чем может быть проблема?
p.s. А ,еще, если написать while (buff!='\n');,то вообще выдает ошибку.
Спасибо 
PM MAIL   Вверх
feodorv
Дата 23.12.2011, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(kiruka4 @  22.12.2011,  17:56 Найти цитируемый пост)
 А ,еще, если написать while (buff!='\n');,то вообще выдает ошибку.

В каком месте? У Вас там пару раз такое уже написано.

Я молчу о контроле ошибок, переполнения, внезапного обрыва читаемого файла, о формате "%i". Я не знаю, чем Вам насолили FILE, fopen, fgets и т.д. Я не могу понять, как это вообще работает. Вы не завершили строчки нулевым символом:
Код

  ...
  a[i] = '\0';
  ...
  b[j] = '\0';
  ...


А Вы говорите:
Цитата(kiruka4 @  22.12.2011,  17:56 Найти цитируемый пост)
А если перед первым и третим словом поставлю лишний пробел - то все ок.

У Вас там while с неучтённым buff:
Код

while(read(ldr2,&buff,1)>0)

Прочтённый символ просто пропадает в неизвестности.  smile 


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
xvr
Дата 23.12.2011, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Использование open вместо fopen в тривиальной учебной задаче еще не делает ее Unix specific.


M
xvr
Тему перенес


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0456 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.