Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > main(int argc,char *argv[])


Автор: viluyr 7.1.2007, 13:43
Дан текстовый файл мы его открываем и проверяем есть ли в нем текст или нет (с помощью argc и argv),если нет текста то выводим сообщение об ошибке.Еще мне надо проверить если argc больше чем надо,то выводить сообшение слишком длинные строки в файле.

Автор: apook 7.1.2007, 13:52
Однако что-то напутал

argc -количество аргументов кмд строки ,а argv их значения

Автор: viluyr 7.1.2007, 13:55
ну да может и перепутал скорее всего argv.А как это все на Си  написать я не понимаю smile 

Автор: apook 7.1.2007, 14:18
Если тебе надо программу считывапющую файл то так и скажи
в argv ты можешь передать только имя файла который нгадо открыть 

Автор: viluyr 7.1.2007, 14:27
НЕ программа у меня есть 
Код

int main(int argc, char *argv[])
{

    char *p;
    int i;
    char c;
         FILE *fin,*fout;
      fin=fopen("F:\\kl\\ewq.txt","rt"); 
           fout=fopen("F:\\kl\\123.txt","wt");

это наччало а затем мне надо проверить есть ли такой файл как fin или нет,есть ли в нем текст или нет.Вот все это надо реализовать при помощи argv и argc.

Автор: apook 7.1.2007, 14:38
Код

#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "string.h"


int main( int argc, char *argv[] )
{
int i;
char ch, fname_in[50];
FILE *f;

if( argc >0 )
    for( i=0; i <argc; i++ )
    {
        if( i==1 ) strcpy( fname_in, argv[i] );
        }
else
{
    printf( "empty cmd line\n" );
    exit(1);
    }

if( (f=(fopen( fname_in, "r+" ))) !=NULL );
else
{
    perror( "Error reading \n");
    exit(1);
    }

fseek( f, 0, SEEK_SET );
for( i=0; (ch=(fgetc( f ))) !=EOF; i++ )
    putc( ch, stdout );


fclose( f );
return 0;
}



Открытие и есть проверка
argv и argc тут не причем


а задание чуть посложней попозже напишу функцию если не напишут 


Автор: viluyr 7.1.2007, 14:53
Хорошо Спасибо

Автор: KpoHyc 7.1.2007, 15:54
viluyr, стоп, ты хочешь получить название файла через аргумент? и проверить его? я прально понял?

Автор: viluyr 7.1.2007, 16:14
ну да мне надо проверить есть ли  такой файл,который я запрашиваю на чтение

Автор: apook 7.1.2007, 16:20
Воперос не правильно задан Если его понимать буквально то получается галиматья
чуть-ли не заполнение массива argv из файла!
Скорее всего нужно это:
[code=cpp]
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "string.h"


int main( int argc, char *argv[] )
{
int i;
long j, c, q;
char ch, fname_in[50];
FILE *f;

if( argc >0 ) //Это проверка есть ли чт-то в командной строке
    for( i=0; i <argc; i++ )
    {
        if( i==1 ) strcpy( fname_in, argv[i] );
        }
else
{
    printf( "empty cmd line\n" );
    exit(1);
    }


if( (f=(fopen( fname_in, "r" ))) !=NULL ); //Это проверка есть ли

Автор: viluyr 7.1.2007, 17:46

apook



  smile СПАСИБО Огромное ты меня выручил!!!

Автор: apook 8.1.2007, 04:49
Ха! Глюки! smile  Net хреновый А я даже не посмотрел нормально ли отправил
Вот весь код который я хотел отправить
Код

#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "string.h"


int main( int argc, char *argv[] )
{
int i;
long j, c, q;
char ch, fname_in[50];
FILE *f;

if( argc >0 ) //Это проверка есть ли чт-то в командной строке
    for( i=0; i <argc; i++ )
    {
        if( i==1 ) strcpy( fname_in, argv[i] );
        }
else
{
    printf( "empty cmd line\n" );
    exit(1);
    }


if( (f=(fopen( fname_in, "r" ))) !=NULL ); //Это проверка есть ли файл
else
{
    perror( "Error reading \n");
    exit(1);
    }


fseek( f, 0, SEEK_SET );
for( i=0, q=0, j=0, c=0; ; i++, q++ ) //Это проверка есть ли чт-то в файле
{
    ch =fgetc( f );
    if( ch =='\n' || ch ==EOF || ch =='\0' )
    {
        if( i >c ) c =i;
        if( ch==EOF && i==0 ) break;
        j++;
        i=0;
        }
    if( ch==EOF ) break;
    }

//j -количество строк
//c -длина самой длинной строки
//q -общее количество символов

if( c==0 )
{
    printf( "File Length of zero: %s", fname_in );
    exit(1);
    }

fseek( f, 0, SEEK_SET );
for( i=0; (ch=(fgetc( f ))) !=EOF; i++ )
    putc( ch, stdout );
puts( "" );

fclose( f );
return 0;
}



Цитата

СПАСИБО Огромное ты меня выручил!!! 

 шутишь или и так хватило smile 

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