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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Дублирует строку. 
:(
    Опции темы
Zadrot
Дата 16.4.2010, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



есть проблема,в программе которая копирует из файла строки и удаляет в каждой строке слово номер N . дублируется предпоследняя строка,если последняя пустая(просто Enter).не подскажите в чем дело?
PM MAIL   Вверх
azesmcar
Дата 16.4.2010, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Zadrot

Ошибка в 6-ой строке smile 
PM   Вверх
toxx
Дата 16.4.2010, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



azesmcar
5 баллов ))
PM MAIL   Вверх
Zadrot
Дата 16.4.2010, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



сори))вот код:
Код

#include<stdio.h>
#include<conio.h>
char *viv(char *line,int n)
{
int i,j,flag=0,counter=0;
char sim;
char stroka[100]="\0";
 counter=0;flag=0;
           i=0;j=0;
            while(*(line+i)!=*"\0")
            {
            sim=*(line+i);
              switch(sim)
            {
              case ' ':
              case '!':
              case ',':
              case '.':
                {
                 *(stroka+j)=sim;//printf("%c",sim);
                 j++;
                 flag=0;
                 break;
                }

              default:
                {
                 if (flag==0)
                   counter++;
                 if (counter!=n)
                   {*(stroka+j)=sim;//printf("%c",sim);
                    j++;}
                   flag=1;
                   break;
                 }
            }
            i++;
        }
return(stroka);


}
void main(void)
 {
  int n1;
  FILE *fp;
  char line1[100];
  char *ptr;

  clrscr();

    printf("Vvedite N = ");
    scanf("%d",&n1);
        fp=fopen("test.txt","rt");
         while (feof(fp)==0)
          {
           ptr=fgets(line1,sizeof(line1),fp);
           printf("%s",viv(line1,n1));

          }
}


PM MAIL   Вверх
azesmcar
Дата 16.4.2010, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Во первых тут есть ошибка, ты возвращаешь указатель на локальный char stroka[100] из функции viv. То, что это работает еще ни о чем не говорит. И во вторых результат fgets надо проверять.

в общем вот, подправил.
Код

#include<stdio.h>

void viv(char* stroka, char *line,int n)
{
    int i,j,flag=0,counter=0;
    char sim;
    counter=0;flag=0;
    i=0;j=0;
    while(*(line+i)!=*"\0")
    {
        sim=*(line+i);
        switch(sim)
        {
            case ' ':
            case '!':
            case ',':
            case '.':
            {
                *(stroka+j)=sim;//printf("%c",sim);
                j++;
                flag=0;
                break;
            }
            default:
            {
                if (flag==0)
                    counter++;
                if (counter!=n)
                    {*(stroka+j)=sim;//printf("%c",sim);
                j++;}
                flag=1;
                break;
            }
        }
        i++;
    }
}

int main()
 {
    char stroka[100]="\0";
    int n1;
    FILE *fp;
    char line1[100];
    printf("Vvedite N = ");
    scanf("%d",&n1);
    fp=fopen("test.txt","rt");
    while (fgets(line1,sizeof(line1),fp))
    {
        viv(stroka, line1,n1);
        printf("%s",stroka);
    }
    return 0;
}

PM   Вверх
Zadrot
Дата 16.4.2010, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ммм,при много благодарен)))есть еще один вопрос,он уже совсем маленький,как мне сделать чтобы он удалял не слово номер N,а самое длинное слово?
PM MAIL   Вверх
azesmcar
Дата 16.4.2010, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Цитата(Zadrot @  16.4.2010,  20:26 Найти цитируемый пост)
как мне сделать чтобы он удалял не слово номер N,а самое длинное слово? 

сперва надо найти самое длинное слово, а потом его удалить smile 
PM   Вверх
Zadrot
Дата 16.4.2010, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



azesmcar, гениально,это я понимаю,как туда счетчик засунуть символьный чтобы не переписывать функции заново??
PM MAIL   Вверх
ИванМ
Дата 16.4.2010, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

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



Цитата(azesmcar @  16.4.2010,  20:16 Найти цитируемый пост)
while(*(line+i)!=*"\0")

Это кто вас такому изврату учил?
PM MAIL   Вверх
azesmcar
Дата 16.4.2010, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Цитата(ИванМ @  16.4.2010,  21:00 Найти цитируемый пост)
Это кто вас такому изврату учил? 

меня? smile 

Цитата(Zadrot @  16.4.2010,  20:53 Найти цитируемый пост)
azesmcar, гениально,это я понимаю,как туда счетчик засунуть символьный чтобы не переписывать функции заново?? 

ну пройдись разок по строке, найди самое длинное а потом пройдись еще раз и удали его.
PM   Вверх
ИванМ
Дата 16.4.2010, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

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



azesmcar, нет, Zadrot'а. Вас то, понятно,  Zadrot научил smile 
PM MAIL   Вверх
azesmcar
Дата 16.4.2010, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Цитата(ИванМ @  16.4.2010,  21:03 Найти цитируемый пост)
Вас то, понятно,  Zadrot научил smile  

хреново как-то звучит smile 
PM   Вверх
Zadrot
Дата 16.4.2010, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



azesmcar, кстать,то что вы исправили тож не работает,теперь он полюбому копирует предпоследнню строку почему то,только щас заметил.


ИванМ, а меня такому препод в универе научил..
PM MAIL   Вверх
ИванМ
Дата 16.4.2010, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

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



Zadrot, вот и скажите своего преподу, что он вас плохому учит а вы и других учите плохому smile 
PM MAIL   Вверх
Zadrot
Дата 16.4.2010, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

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

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

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

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


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

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


 




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


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

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