Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

поиск в файлах

39K
01 июля 2009 года
psyco
14 / / 09.12.2008
Привет всем.У меня такое задание: есть файл с набором(около 350 строчек)
1 <название 1> 10
2 <название 2> 20
...
Мне надо сделать,чтобы при вводе одного символа(например A,B,...) на текстовый экран выдавало все возможные названия,начинающийся с буквы А,B,...
Написал что то типа:
Код:
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include<io.h>
int main(void)
{
    const char* city[]={"Lviv","London","Kyiv","Moscow","Minsk"};
    int i;
    clrscr();
    FILE *f;
    f=fopen("c:\\time2.dat","w+r");
    for(i=0;i<5;i++)
    {
        fprintf(f,"%1d   %s\n",i+1,city);
    }
   char *ptr, c;
   printf("char=");
   scanf("%s",&c);
   for(i=0;i<5;i++)
   {
        fscanf(f,"%1d    %s\n",&i+1,city);
        ptr = strchr(city, c);
        if((int(ptr)==(-28))&&(!eof))
            printf("%s\n",city);
        else
            printf("The character was not found\n");
   }
    getch();
   return 0;
}

 
Код:
(int(ptr)==(-28))
это как бы указатель ptr ищет на -28 месте символ(-32 место - начало строчки),который мы задаем через "с".Но все равно код не работает,всегда пишет что ничего не нашло:confused: Помогите пожалуйста
288
01 июля 2009 года
nikitozz
1.2K / / 09.03.2007
Вот этим вы чего хотели добиться?
 
Код:
fscanf(f,"%1d    %s\n",&i+1,city);
ptr = strchr(city, c);
        if((int(ptr)==(-28))&&(!eof))


Почитайте внимательней описание функций fscanf и функций работы со строками.
39K
01 июля 2009 года
psyco
14 / / 09.12.2008
 
Код:
ptr = strchr(city, c);
        if((int(ptr)==(-28))&&(!eof))

это я взял с этого примера,немного переделав под свою тему:
Код:
#include <string.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{
clrscr();
   char string[20];
   char *ptr, c = 'r';
   strcpy(string, "This is a string");
   ptr = strchr(string, c);
   if (ptr)
     printf("The character %c is at position: %d\n", c, ptr);
   else
    printf("The character was not found\n");
    getch();
   return 0;
}

Дело в том,что с файлами работал мало,поэтому код с ошибками и работает неправильно,подскажите пожалуйста,у меня уже прям сил нет с ним,а программу доледать нужно до пятницы:(
47K
01 июля 2009 года
Sashok123
18 / / 01.07.2009
Куда-нибудь после того как записали в файл fflush(), в конце fclose(), с нужным параметром
fscanf(f,"%1d %s\n",&i+1,city);
&i+1 означает адрес, смещенный на (размер инт)*1 относительно адреса хранения i, по этому адресу скорее всего ничего не запишется и выпадет ошибка, читать нужно в i, т е писать &i (& берет адрес)
к тому же fscanf(f,"%1d %s\n",&i+1,city); читает данные в
const char* city[]={"Lviv","London","Kyiv","Moscow","Minsk"};
это константные данные, их вроде как нельзя менять.
Не уверен можно ли задавать такие параметры открытия файла w+r.

Подружитесь с Отладчиком
39K
02 июля 2009 года
psyco
14 / / 09.12.2008
вместо:
 
Код:
if((int(ptr)==(-28))&&(!eof))
            printf("%s\n",city);
        else
            printf("The character was not found\n");

написал
 
Код:
if(ptr)
            printf("%s\n",city);

и заработало,т.е как только программа видит строчку с большой буквой N(A,B,...,Z)она пишет эту строчку.Но я так вижу здесь никто не может помочь,жаль...
288
02 июля 2009 года
nikitozz
1.2K / / 09.03.2007
Цитата: psyco
Но я так вижу здесь никто не может помочь,жаль...



Еще один. :mad:
Что вы понимаете под словом "помочь"? Вам помогли: показали на ваши ошибки, которые вы должны исправить (пусть не я, но другой пользователь).
Что вам еще надо? Чтобы выложили готовый код? Пожалуйста, идите в тему студенты или работа, назначайте цену, которую готовы заплатить за решение задачи и будет вам код.

Вчера вечером ушел домой с работы с намерением сегодня утром вам этот код выложить. Последняя фраза убила желание начисто.
Знаете, обычно в таких случаях отправляют читать подпись kot_'а. Не буду и я исключением - почитайте.

P.S. Извиняюсь за оффтоп.

39K
02 июля 2009 года
psyco
14 / / 09.12.2008
Во первых тема называеться "Общие вопросы",да?Вот это вы хотите назвать помощь: "Почитайте внимательней описание функций fscanf и функций работы со строками.",вы думаете я детективы читал,делая эту работу?Все примеры какого то совсем другого рода,я понимаю что переделать под свои потребности нужно,но у меня остался один день,и совсем мало опыта по работе с файлами,поэтому и прошу вашей помощи...я же написал,я же попросил вежливо"помогите пожалуйста".
Вот Sashok123 спасибо за помощь,помог увидеть некоторые ошибки в коде.
Я не прошу вылаживать мне здесь целый код,я же сам вылажил 2 раза,я прошу хоть на 2 строчки показать как должно выглядеть и работать это.
Ивините тогда за Но я так вижу здесь никто не может помочь,жаль...,я вчера все нервы себе этой программой вымотал,целый день ждал ответа на форумах и ничего:(
1
03 июля 2009 года
kot_
7.3K / / 20.01.2000
Я бы посоветовал топикстартеру поменьше обижаться (потому как на обиженных в лучшем случае воду возят) - помощь вам оказали, причем непосредственно во втором сообщении. Никто не будет за нерадивого студента делать работу - если лично вам это не нравиться - то это лично ваша проблема. Кроме того - предупреждаю последний раз - на нытье халявщиков "нууу никто не хочет..." - здесь отвечают просто - бан. и как правило навсегда. Надеюсь это понятно? Все что вы думаете по этому поводу - я сразу предупреждаю мне абсолютно паралельно. Задайте в гугле "как правильно задавать вопросы", вы прочтете много интересного. Тема закрыта.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог