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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разработка функции, аналог getw...? 
:(
    Опции темы
aboutblank
Дата 28.3.2006, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Народ, помогите реализовать функцию которая должна называться getint(i), которая вводит целое число из стандартного потока.Возвращает ссылку на целое число и целый код завершения: (-1) - EOF , (1) - строка содержит не цифры, 0 - строка сожержит цифры.Как я понимаю функция совсем небольшая,но я не совсем понял как реализовать и аналог ли её функция getw?!Если кто сможет помочь написать буду очень признателен !!! Советы ценные тоже пригодяться!
PM MAIL   Вверх
zhgutov
Дата 30.3.2006, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

#include <iostream>
void main ()
{
    int value;
    std::cout << "Enter value: ";
    std::cin >> value;
    std::cout << "value = " << value << std::endl;
}

Чем не вариант?
--------------------
Приполз. Увидел. Укусил.
PM MAIL   Вверх
aboutblank
Дата 30.3.2006, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



К сожалению в Си++ я не разбераюсь, нужен код на Си, причём чтобы возвращал ссылку на целое число из этого стандартного потока.... не могли бы продемонстрировать тоже, но на Си
PM MAIL   Вверх
threef
Дата 30.3.2006, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

int getint(int* x)
{
   int result=scanf("%d",x);
   return result==0? 1 :
                             result==EOF ? EOF : 0;
}

должно помочь
PM MAIL   Вверх
zhgutov
Дата 30.3.2006, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Функция int getw (FILE* stream) читает четыре байта из потока stream, интерпретируя их как int; это не функция чтения ASCII-строки. Для чтения строки из файла есть функция char* fgets (char *str, int n, FILE *stream) или из потока stdin: char* gets (char*).
Код

#include <stdio.h>
#include <stdlib.h>
void main ()
{
    char buffer [16];
    printf ("Enter value: ");
    int value = atoi (gets (buffer));
    printf ("value = %d\n", value);
}

Недостаток функции gets () состоит в том, что возможно переполнение буфера.

Можно иначе:
Код

#include <stdio.h>
#include <stdlib.h>
void main ()
{
    char buffer [16];
    printf ("Enter value: ");
    int value = atoi (fgets (buffer, 16, stdin));
    printf ("value = %d\n", value);
}


Или так:
Код

#include <stdio.h>
#include <stdlib.h>
void main ()
{
    char buffer [16];
    FILE* input = fopen ("con", "r");
    if (input)
    {
        printf ("Enter value: ");
        int value = atoi (fgets (buffer, 16, input));
        printf ("value = %d\n", value);
        fclose (input);
    }
    else
    {
        printf ("Cannot open console.\n");
    }
}

Вместо «con» можно подставить имя файла.

У вас есть MSDN или прочая документация? Там об этом можно узнать подробнее.
--------------------
Приполз. Увидел. Укусил.
PM MAIL   Вверх
aboutblank
Дата 2.4.2006, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нужно не на Си++ а на Си что-то на подобие вот такого,только не пойму то ли это,т.е соответствует моей функции описанной в первом посте :
Код

#include <stdio.h>
#define size 20
int getint (int *pn);

int main(void)
{
int i,n, v, array[size];

 /* for (n = 0; n < size && getint(&v) != -1; n++)
     {
      array[n] = v;
      printf("%d ",array[n]);
     }
 */
i = getint(&v);
printf("I=%d\nv=%d\n",i,v);
return 0;
}
getint(int *pn) /* get next integer from input */
 {
     int c,sign,code;
     int k=0;

     while ((c = getch()) == ' ' || c == '\n'
         || c == '\t' || c== '\r'); /* skip white space */
         sign = 1;

     if (c == '+' || c == '-') { /* record sign */
                 sign = (c == '+') ? 1 : -1;
                 c = getch();
         }

     for (*pn = 0; c >= '0' && c <= '9'; c = getch())
        {
         *pn = 10 * *pn + c - '0';
         k++;
        }
     *pn *= sign;
     if (c != EOF)  ungetch©;
     if (c == EOF)
         code =- 1;
     if (k == 0 && c != EOF)
         code = 1;
     if (k > 0)
         code = 0;
     return code;
 }

Модератор: Пользуемся тэгами code!

Это сообщение отредактировал(а) Earnest - 3.4.2006, 20:26
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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