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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2009, 15:53   #1
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию fgets - работает не верно, и вообще тупит

Код:
int main()     
{
  char st1[10],st2[10];
  fgets(&st1[0],sizeof(st1),stdin);
  fgets(&st2[0],sizeof(st2),stdin);

//код
}
После того, как ввожу , прога либо падает, либо выполняется не правильно, или выводит в консоль лишний символ, со scanf все катит, но со scanf мне светит переполнение буфера, помогите, посоветуйте, направьте на путь истинны.

p.s Так тоже пробывал

Код:
  fgets(st1,sizeof(st1),stdin);
  fgets(st2,sizeof(st2),stdin);
heart вне форума Ответить с цитированием
Старый 14.11.2009, 16:05   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Странно, у меня всё работает отлично. Читает и выводит нормально, Вы уверены, что именно тут программа падает?
netrino вне форума Ответить с цитированием
Старый 14.11.2009, 16:34   #3
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию

Уверен, ибо как я уже сказал, со scanf все работает.
heart вне форума Ответить с цитированием
Старый 14.11.2009, 16:52   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Хотелось бы увидеть остальную часть кода, так как скопированный один в один Ваш код у меня прекрасно работает на VS2008, VS2010, BC++ 3.1, C++ Builder 2010 и MinGW 3.4.5
netrino вне форума Ответить с цитированием
Старый 14.11.2009, 17:39   #5
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию

Код:
#include <stdio.h>
#include <string.h>


int main()
{
     int i,ii,iii=0;
     char st1[10],st2[10];

    fgets(&st1[0],sizeof(st1),stdin);
    fgets(&st2[0],sizeof(st2),stdin); 
 
     for(i=0;i<strlen(st1);i++)
     {
         for(ii=0;ii<strlen(st2);ii++)
          if(st1[i]==st2[ii])
             iii++;
     }
     
     if (iii==strlen(st1))
        printf("Success!!!");
     scanf("%");
}
heart вне форума Ответить с цитированием
Старый 14.11.2009, 18:01   #6
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Опять же, у меня правильно работает.
Ввод:
Код:
ddd
d
Вывод:
Код:
Success!!!
netrino вне форума Ответить с цитированием
Старый 15.11.2009, 01:10   #7
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию

блин, так и знал, что этот dev c++ тупит... надо норм версию найти.
heart вне форума Ответить с цитированием
Старый 15.11.2009, 15:19   #8
lennon
Заблокирован
 
Регистрация: 18.11.2007
Сообщений: 254
По умолчанию

прежде чем на другпие программы ругаться нужно научиться с ними правильно обращаться. дев не тупит, это ты тупишь, я не проверяю, но если я не прав буду , значит я туплю. Понимаешь... строки в памяти за качнчиваються нулевым байтом, а ТЫ не оставил места в массиве для НУЛЕВОГО БАЙТА. читай на один байт МЕНЬШЕ. должно будет работать... ЕСЛИ У ТЕБЯ ЭТО СТРОКА, ТО ПОСЛЕДНИЙ БАЙТ МАССИВА должен закачиваться НУЛЕВЫМ БАЙТОМ! проверь это в дебагере.
Программа делает то, что ей сказано делать, компилятор не виноват, виноват ПРОГРАММИСТ!!! ТАК ВСЕГДА!!!
lennon вне форума Ответить с цитированием
Старый 15.11.2009, 16:44   #9
heart
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 64
По умолчанию

Ты меня прогать не учи!!! нашелся учитель!(расказывает мне тут про дебагер и нуль байт) ясно сказали, что тот же код под другим компилем работает нормально! и компилятор ошибается тоже, а те кто думают иначе, не компетентны.
heart вне форума Ответить с цитированием
Старый 15.11.2009, 18:06   #10
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

компилятор не ошибается, я тоже когда то на него матами крыл и говорил что он кривоват, но оказалось, что это я сплошал )
Olejik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ fgets mertl Помощь студентам 12 09.09.2009 15:10
Помогите пожалуйста! Я вообще в этом чайник! Мне нужна подсказка есть ли такое вообще???? Виктория010203 Помощь студентам 3 31.07.2009 22:52
как это работает и что оно вообще такое? kievlyanin Microsoft Office Excel 9 08.07.2009 14:33
ajax скрипт. Строка загрузки не верно работает alldmc PHP 3 21.01.2009 15:38
[B]Народ! Проверки мне верно или не верно? мне надо завтра сдавать[/B] Vladislav_87 Паскаль, Turbo Pascal, PascalABC.NET 6 04.06.2008 14:34