45 / 45 / 40
Регистрация: 31.08.2015
Сообщений: 147
1

Как записать данные в переменную, не имея указатель на неё?

14.07.2016, 23:27. Показов 1139. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Столкнулся с такой проблемой. Сейчас изучаю c по книге K&R. Нашёл там пример применения библиотеки stdarg в создании упрощённой функции для вывода в стандартный поток. Теперь пытаюсь написать функцию для ввода, типо scanf, проблема в том, что я не понимаю, как записать данные в переменную, не имея указатель на неё.
Код выглядит приблизительно так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int scf(char *s, ...)
{
    va_list ap;
    int k = 0;
    char *p;
    int c;
    int *gerp;
    va_start(ap,s);
    for(p = s; *p; p++) {
        if(*p == '%') {
            switch(*++p) {
            case 'd':
                while((c = getchar()) != EOF && c != '\n') {
                    k = k*10 - '0' + c;
                }
                .......
                .......
                break;
            }
        }
    }
    va_end(ap);
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.07.2016, 23:27
Ответы с готовыми решениями:

как в поле дока записать данные имея название поля в масиве!
допустим есть масив.....mas1 и mas2 нужно в поле дока с названием которое хранится в итом элементе...

Как записать данные с запроса в переменную
Добрый день вопрос такой к примеру у меня есть запрос который выдает значения 1,2,3 как переделать...

Как записать в переменную данные из QDateTimeEdit?
Помогите, пожалуйста,есть QDateTimeEdit, пользователь ввёл в него время и дату, и мне нужно...

Как записать нужные данные из БД в переменную?
Уважаемые формучане, прошу Вашей помощи. Мне нужно в Excel, в разные ячейки записать данные из БД...

4
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
15.07.2016, 03:55 2
Цитата Сообщение от IVAN1234 Посмотреть сообщение
проблема в том, что я не понимаю, как записать данные в переменную, не имея указатель на неё.
Без указателя вы и не запишите. Просматриваете вашу строку s, видите "%тип данных" получаете указатель на вашу переменную va_arg(ap, тип данных)В Вашем случае в кейс 'd' добавить ptr = va_arg(ap, int*) и в этот указатель пишите.
0
45 / 45 / 40
Регистрация: 31.08.2015
Сообщений: 147
15.07.2016, 05:01  [ТС] 3
Думаю, вы имеете ввиду что то наподобии:
C
1
2
3
4
int *gerp;
//KOD.....
                gerp = va_arg(ap, int *);
                gerp = k;
0 эффекта, в переменную ничего не записывается.
0
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
15.07.2016, 07:20 4
Лучший ответ Сообщение было отмечено IVAN1234 как решение

Решение

IVAN1234, покажите код, как вызываете функцию.

Добавлено через 3 минуты
Цитата Сообщение от IVAN1234 Посмотреть сообщение
C
1
gerp = k;
C
1
*gerp = k;
Вот так у меня работает:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
int scf(char *s, ...)
{
    va_list ap;
    int k = 0;
    int * ptr_int;
    char *p;
    int c;
    int *gerp;
    va_start(ap,s);
    for(p = s; *p; p++) {
        if(*p == '%') {
            switch(*++p) {
            case 'd':
                ptr_int = va_arg(ap, int *);
                while((c = getchar()) != EOF && c != '\n') {
                    k = k*10 - '0' + c;
                }
                *ptr_int = k;
                break;
            default:
                break;
            }
        }
    }
    va_end(ap);
}
int main() 
{
    int a;
    scf("%d", &a);
    printf("%d\n",a);
    return 0;
}
Добавлено через 6 минут
Но для для нескольких переменных нужно еще разделители добавить в условие.

Добавлено через 7 минут
Поищите реализацию в гугле "scanf() source code"
1
45 / 45 / 40
Регистрация: 31.08.2015
Сообщений: 147
15.07.2016, 14:06  [ТС] 5
Благодарю, как обычно, забыл указать адресс, в самом вызове функции...
0
15.07.2016, 14:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.07.2016, 14:06
Помогаю со студенческими работами здесь

Как записать в переменную string данные о рабочем
подскажите пожалуйста, как записать в переменную string данные о рабочем? .386 .model flat,...

Как вытащить данные из таблицы БД и записать в js-переменную?
Допустим есть следующие файлы: 1) index.php - макет программы; 2) calc.js - скрипт...

Как записать в переменную выбранные данные в dateTimePicker?
Вообщем тема говорит сама за себя. Как записать в переменную выбранные данные в dateTimePicker?

Как из ajax получить данные и записать в переменную?
Всем привет! У меня есть одна проблема, изучаю ajax и мне нужно получить данные из success и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru