Форум программистов, компьютерный форум CyberForum.ru

Определить все данные, тип которых вводится из командной строки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Упрощенная консольная графика и кодировка символов http://www.cyberforum.ru/cpp-beginners/thread455695.html
Всем привет! Сразу к делу! У Лфоре есть листинг программы horse.cpp. Так вот вродебы нащел листинг программы, нужные библиотеки для Microsoft компилятора... Но сталкнулся с такой проблемой как кодировка символов. Проблема в функции "putch"!Эта функция как то своеобразно выводит символы, а точнее не так как мне нужно.Мне нужен символ в кодировке ANSI под номером '\xDD' и '\xB3'. Я попробовал...
C++ С++ : перспективен ли он? Я сейчас в 9 классе. Хочу стать программистом со специализацией по С++. Стоит ли выбирать этот язык, я имею в виду сколько он ещё будет жить, ведь мне ещё 2 года в школе учиться, далее институт лет 5... Как бы он не стал маловостребованным... И как там дела с С#, C ? Так же интересует Java. И ещё: если есть перспективы у C++, то какую среду разработки брать : Builder или Visual Studio? http://www.cyberforum.ru/cpp-beginners/thread455686.html
Можно ли создать свой перегруженный вариант функций, для разных типов потока C++
Доброго времени суток. Хотелось бы задать несколько вопросов, ответы на которые мне не удалось найти в справочнике. 1. Можно ли создать свой перегруженный вариант функций, для разных типов потока (функция вывода: стандартный вывод, ostream и файловый вывод, ofstream; функция ввода: стандартный ввод, istream и файловый ввод, ifstream)? 2. Можно ли внутри самой функции ввода/вывода определить,...
C++ Вычислить значение выражения
Здравствуйте,вот решил покавырятся в заданиях из лабараторных работ (просто для себя) заинтересовала эта задача,но как ее записать я что-то совсем не пойму,запутался...Проблемм с циклами не возникало совсем,пока не увидел эту задачу) Даны три числа x, y, z. Найти а) max (x+y+z, xyz)+3, б) min (x2+y2, y2+z2)-4. Кому не сложно прошу помочь :) Компилятор GNC/GNU Code Blocks 10.05
C++ Почему появляется предупреждение Variable '...' set but not used http://www.cyberforum.ru/cpp-beginners/thread455657.html
Здравствуйте. Возник вопрос, почему при компиляции данного кода #include <iostream> int main( int argc, char** argv ) { int menu = 0, way = 1; bool pen = false; switch ( menu ) {
C++ Вычислить сумму значений массива в нечетных столбцах Дан массив X размерности M На N. Вычислить сумму значений массива в нечетных столбцах. подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
01.03.2012, 22:07     Определить все данные, тип которых вводится из командной строки
Liv-pooL, вот код решающий задачу парсинга из файла.
Данные в файле baba v 45 45.4 45.67 dgskjkh 4 8
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#include <string.h>
 
int ParseDouble(FILE * f)
{
    int count    = 0;
    double d_arg = 0;
    long pos  = ftell(f);
    fseek(f,0,SEEK_END);
    long fLen = ftell(f);
    fseek(f,0,SEEK_SET);
    printf("Parsing of double arguments\n");
    while(!feof(f))
    {
        if(fscanf(f,"%lf",&d_arg))
        {
            printf("%lf\n",d_arg);
            fseek(f,(pos = pos + sizeof(double)),SEEK_SET);
            count = count + 1;
        }
        fseek(f,(pos = pos + 1),SEEK_SET);
        if(fLen <= pos)
            break;
    }
    return count;
}
 
int ParseInt(FILE * f)
{
    int count = 0;
    int i_arg = 0;
    long pos  = ftell(f);
    fseek(f,0,SEEK_END);
    long fLen = ftell(f);
    fseek(f,0,SEEK_SET);
    printf("Parsing of int arguments\n");
    while(!feof(f))
    {
        if(fscanf(f,"%d",&i_arg))
        {
            printf("%d\n",i_arg);
            fseek(f,(pos = pos + sizeof(int)),SEEK_SET);
            count = count + 1;
        }
        fseek(f,(pos = pos + 1),SEEK_SET);
        if(fLen <= pos)
            break;
    }
    return count;
}
 
int isString(char * text)
{
    int ret = 1;
    for(int i = 0; text[i] != '\0' && ret; i++)
    {
        if(isdigit(text[i]))
            ret = 0;
    }
    return ret;
}
 
int ParseString(FILE * f)
{
    int  count     = 0;
    char s_arg[32] = {0};//Полагаем что слов длинней 32 символов не будет
    long pos  = ftell(f);
    fseek(f,0,SEEK_END);
    long fLen = ftell(f);
    fseek(f,0,SEEK_SET);
    printf("Parsing of (char *) - string arguments\n");
    while(!feof(f))
    {
        pos = ftell(f);
        if(fscanf(f,"%s",s_arg))
        if(isString(s_arg))
        {
            printf("%s\n",s_arg);
            count = count + 1;
            fseek(f,(pos = pos + strlen(s_arg)*sizeof(char)),SEEK_SET);
            pos = ftell(f);
        }
        fseek(f,(pos = pos + 1),SEEK_SET);
        if(fLen <= pos)
            break;
    }
    return count;
}
 
int main(int argc, char * argv[])
{
    FILE * f = fopen("data.txt","r");
    if(!f)
        printf("Error open data.txt\n");
    else
    {
        if(argc < 2)
            printf("To less of arguments\n");
        else
        {
            if(strcmp(argv[1],"double") == 0)
                printf("Total Number of double arguments in file :%d\n",ParseDouble(f));
            else
            if(strcmp(argv[1],"int") == 0)
                printf("Total Number of int arguments in file :%d\n",ParseInt(f));
            else
                printf("Total Number of string arguments in file :%d\n",ParseString(f));
        }
        fclose(f);
    }
    printf("Press any key to continue\n");
    _getch();
    return 0;
}
Одно но дела с int обстоят хуже чем со стрингами и double, если ложить руку на сердце fscanf в определённых ситуациях может спокойно принять за double скажем число 4 ведь по сути 4.0 это уже double. Так что лучше уж ограничится в файле двумя разнородными типами char * и double
Миниатюры
Определить все данные, тип которых вводится из командной строки   Определить все данные, тип которых вводится из командной строки   Определить все данные, тип которых вводится из командной строки  

 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru