Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > argv и argc


Автор: jetset 5.1.2007, 13:27
Необходимо ф-ию main описать при помощи argv и argc.Как ето сделать

Вот код ф-ции main :
Код

// основная программа
int main()
{

    char *p;
    int i;
    char c,*ch;

    fin=fopen("F:\\kl\\qwe.txt","rt"); 
    fout=fopen("F:\\kl\\123.txt","wt");
    strcpy(current_str,"");        
    while (!(page_type)==0)        
    {
        while (page_type==1)    
        {
            reading_string_add();    //чтение строки 
            if (str[0]!='?')        
            {    for (i=0;i<border_left;i++)     
                    fprintf(fout,"%c",' ');
                fprintf(fout,"%s\n",str);               
                                if (current_str_num>=page_height1)      
                                        N_P();
                                else current_str_num++;
            }
            else
            {    
                 p=strtok(str," ");
                if (strcmp(p,"?размер")==0) 
                {
                    p=strtok(NULL," ");
                    page_height=atoi(p);  
                    page_height1=page_height-(snoska_len+1)*otbivka;        
                    p=strtok(NULL," ");         
                    page_width=atoi(p);
                    text_width=page_width-border_left-border_right;                    
                }
                else
                {
                    p=strtok(NULL," ");         
                        if (strcmp(p,"неплотный")==0)
                            page_type=1;
                        if (strcmp(p,"плотный")==0)
                            page_type=2;
                        if (strcmp(p,"выравнивание")==0)
                            page_type=3;
    
                }
                
            }
        }

        while ((page_type==2)||(page_type==3))   
        {
            reading_string_add();     
            if (str[0]!='?')   
            {
                                word=strtok(str," ");   //вытаскиваем первое слово из строки
                 if ((strlen(current_str)+strlen(word))>text_width)     
                {
                    w_c_string(0);   
                    strcpy(current_str,word);
                }
                                else
                           strcat(current_str,word);    //  в current_str записываем слово word 
                zapis_probelov_string();         //zapis_probelov_string()-достает одно слово из строки и преписывает пробел
                while((word=strtok(NULL," "))!=NULL) 
                {
                    if ((strlen(current_str)+strlen(word))>text_width)  
                    {
                        w_c_string(0);      
                        strcpy(current_str,word);
                    }
                    else
                        strcat(current_str,word);  //добавляем к слову след слово   
                    zapis_probelov_string();   
                }
            }
            else

            {      
                p=strtok(str," ");
                 p=strtok(NULL," ");
                if ((strlen(current_str)!=0)&&(strcmp(p,"номер")!=0)&&(strcmp(p,"сноска")!=0))
                    w_c_string(1);
                if (strcmp(p,"режим")==0)
                                        c_p_type_string();
                if (strcmp(p,"размер")==0)
                                        change_page_size();
                if (strcmp(p,"абзац")==0)
                                        abz_str_ped();
                if (strcmp(p,"интервал")==0)
                                        str_otb();
                if (strcmp(p,"пропуск")==0)
                                        str_probel();
                
                
                if (strcmp(p,"номер")==0)
                                        N_P_number();
                if (strcmp(p,"страница")==0)
                                {
                                        W_E_String(page_height);
                                }
                if (strcmp(p,"остаток")==0)
                                        O_str();
                if (strcmp(p,"сноска")==0)
                                        N_snos_string();

            }
        }
                
    }

        if (strlen(current_str)!=0)     
        w_c_string(1);   
        if (current_str_num!=0)
                W_E_String(page_height);   
    fclose(fin);    
    fclose(fout);
    return 0;        
}


Автор: _hunter 5.1.2007, 14:13
что значит "описать"? а вообще смотри в MSDN "main function"

Автор: jetset 5.1.2007, 14:22
зделать с помощью argc , argv.Просто я не пойму как.

Автор: _hunter 5.1.2007, 14:56
что зделать?
+ посмотри таки справку...

Автор: V.A.KeRneL 5.1.2007, 15:43
jetset, можно привести простой пример, из которого, я думаю, станет понятно как с этим работать... 
Код

#include <stdio.h>

int 
main(int argc, char ** argv) 
{ 
    int i;  /* counter, index */
    
    for (i = 0; i < argc; ++i) { 
        printf("argv[%d] = %s\n", i, argv[i]);
    }
    
    return (0);
}


Автор: jetset 5.1.2007, 15:58
Да это я понимаю что : main(int argc,char *argv[]).
Я не понимаю где они в программе должны стоять,и как сделть в моем случае smile 
помимо самой ф-ции main у меня в программе присутствуют другие ф-ции :
void reading_string_add();
void w_c_string(int last_line);
void zapis_probelov_string();
void N_snos_string();
void N_P();
void W_E_String(int n);
void zapis_snos_str();

как мне  main (в моем случае) сделать с помошью  Аргументов командной строки (argc и argv) . smile 
 smile  

Автор: _hunter 5.1.2007, 16:28
Цитата(jetset @  5.1.2007,  15:58 Найти цитируемый пост)
Я не понимаю где они в программе должны стоять,и как сделть в моем случае

там же где и в примере...
ты немного посиди, подумай (на тему "ыто я хочу сделать"). напиши это толком...
потому как это из твоих вопросов совершенно задача не ясна...

Автор: viluyr 5.1.2007, 16:34
Ок понял буду разбиратца ..Спасибо .если что буду обрашатся  smile 

Автор: V.A.KeRneL 11.1.2007, 15:36
jetset, viluyr, может этот топик ещё приглянется: http://forum.vingrad.ru/topic-128494.html[http://forum.vingrad.ru/topic-128494.html]http://forum.vingrad.ru/topic-128494.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)