2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 что такое валидатор аргументов? (на си)
Сообщение23.06.2017, 11:44 
Аватара пользователя
1. не понял зачем пишут аргументы какие-то у функции main
2. и еще не понял, что такое и зачем нужен массив флагов

смотрел лекцию-- https://vk.com/fave?section=likes_posts&z=video-30666517_456239620/2fd1001248f51fdb3b/pl_post_-30666517_1484483 , но пока что не врубаюсь

тот мужик, ведущий занятие работает в текстовом редакторе, не понимаю: почему он именно в нем работает, а не в среде к примеру ВижуалСтудио, там же есть отладчик и еще можно смотреть, чему равняется переменная на каком шаге (или это тоже к отладчику относится?) ?

а вот код с тем самым аргументом:
код: [ скачать ] [ спрятать ]
Используется синтаксис C
#include<stdio.h>
 
.......
.......
 
void validateFlags( const char * const flags[], const int const lenght )
{
        for(int i = 1; i < lenght ; i++ )
        {
                for(int j = 0; j < allowedFlagsLenght; j++)
                {
                        printf("Arg input: %s\n, Allowd arg: %s", flags[i], allowedFlags[j]);
                }
        }
}
 
int main( const int const argc, const char * const argv[] )
 {
        if( argc > 1 ) validateFlags( argv, argc );
        return 0;
 }
 


-- 23.06.2017, 11:54 --

Romashka97 в сообщении #1228728 писал(а):
1. не понял зачем пишут аргументы какие-то у функции main

Кажись нашел: аргументы функции main - это аргументы командной строки. Это и есть валидатор аргументов?

 
 
 
 Re: что такое валидатор аргументов? (на си)
Сообщение23.06.2017, 12:02 
Когда вы открываете какой-нибудь документ, например текст во ворде, как вы думаете, откуда ворд узнаёт, какой файл ему открыть?
Скорее всего имя файла передаётся ему в аргументах
Возможно, там не на C++ написано, но на других языках принцип тот же.

Ну и куча других применений.

 
 
 
 Re: что такое валидатор аргументов? (на си)
Сообщение23.06.2017, 12:07 
Да, аргументы main() - это способ передачи программе информации о параметрах, заданных в командной строке (а также о названии исполнимого файла программы).

Валидатор аргументов - это нечто, предназначенное для проверки корректности аргументов.

В названии темы указан C, а смотрите Вы видеоролик про C#. Это проявление Вашей безалаберности или Вы действительно не понимаете, что это два принципиально разных языка?
Romashka97 в сообщении #1228728 писал(а):
тот мужик, ведущий занятие работает в текстовом редакторе, не понимаю: почему он именно в нем работает, а не в среде к примеру ВижуалСтудио, там же есть отладчик и еще можно смотреть, чему равняется переменная на каком шаге (или это тоже к отладчику относится?) ?
Вообще говоря, правильно делает. Обучение - это одно, работа уже понимающего, что происходит, человека - немного другое.

 
 
 
 Re: что такое валидатор аргументов? (на си)
Сообщение23.06.2017, 12:15 
Pphantom в сообщении #1228737 писал(а):
В названии темы указан C, а смотрите Вы видеоролик про C#.

Не не, там чистый Си, всамделишный.
Romashka97 в сообщении #1228728 писал(а):
тот мужик, ведущий занятие работает в текстовом редакторе, не понимаю: почему он именно в нем работает, а не в среде к примеру ВижуалСтудио, там же есть отладчик и еще можно смотреть, чему равняется переменная на каком шаге (или это тоже к отладчику относится?) ?

Во первых, в видео можно углядеть линукс, так что никаких вижуал студий. Во-вторых, простенькие программки хоть в блокноте можно писать. В третьих, Sublime Text - это вам не блокнот, а оченно мощный текстовый редактор, прям самый лучший.
А код, который вы привели, выглядит весьма странно

 
 
 
 Re: что такое валидатор аргументов? (на си)
Сообщение23.06.2017, 12:19 
Аватара пользователя
se-sss,Pphantom,12d3, спасибо!

-- 23.06.2017, 12:20 --

Romashka97 в сообщении #1228743 писал(а):
А код, который вы привели, выглядит весьма странно

Я просто не дописал его, думал, что остальное не важно.

 
 
 
 Re: что такое валидатор аргументов? (на си)
Сообщение23.06.2017, 12:22 
12d3 в сообщении #1228742 писал(а):
Не не, там чистый Си, всамделишный.
Да, действительно. Я посмотрел на заглавие, а ролик запускать не стал.

 
 
 
 Re: что такое валидатор аргументов? (на си)
Сообщение23.06.2017, 12:29 
Аватара пользователя
А ещё в вашем коде есть слово lenght (трижды). Оно существует в английском, но уверен, вы всё-таки хотели использовать length ;-)

 
 
 
 Re: что такое валидатор аргументов? (на си)
Сообщение23.06.2017, 12:29 
Romashka97 в сообщении #1228743 писал(а):
Я просто не дописал его, думал, что остальное не важно.
Я глянул ролик, и понял, что ваш код - это какой-то промежуточный этап. А то он ничего не валидирует, хотя заявлено, что должен. Ну и const int const length - это прекрасно.

 
 
 
 Re: что такое валидатор аргументов? (на си)
Сообщение23.06.2017, 12:32 
Аватара пользователя
lenght, 12d3! lenght и только так! ;-D

 
 
 
 Re: что такое валидатор аргументов? (на си)
Сообщение23.06.2017, 14:13 
Аватара пользователя
12d3 в сообщении #1228748 писал(а):
Ну и const int const length - это прекрасно.

Т.е. здесь что-то не так?(вторая const лишняя)

 
 
 
 Re: что такое валидатор аргументов? (на си)
Сообщение23.06.2017, 14:50 
Аватара пользователя
Romashka97 в сообщении #1228789 писал(а):
Т.е. здесь что-то не так?(вторая const лишняя)
Сами-то подумайте.

 
 
 
 Re: что такое валидатор аргументов? (на си)
Сообщение23.06.2017, 14:56 
Romashka97 в сообщении #1228789 писал(а):
Т.е. здесь что-то не так?(вторая const лишняя)

Или первая. const int const length - это то же самое, что int const length и const int length. Т.е., компилятор такое скушает, но зачем так делать? Сейчас проверил, даже const const int const const const x = 5; прокатывает. :D
Однако, если из const char * const argv[] выкидывать const(хоть первый, хоть второй), то смысл уже изменится.

 
 
 
 Re: что такое валидатор аргументов? (на си)
Сообщение07.07.2017, 01:00 
Лучше всего запомнить, что const будет относится к тому, что стоит перед ним (да, противоречит логике чтения). const char * const argv[] эквивалентно char const * const argv[], но второй вариант точно не даст запутаться в const char * s[], char const * s[], char * const s[].

 
 
 [ Сообщений: 13 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group