Как создать файл с именем, указанным в командной строке в C ++? - PullRequest
2 голосов
/ 03 декабря 2011

Я занимаюсь некоторыми уроками C ++, и до сих пор чертовски хорош в этом.Тем не менее, есть одна вещь, которая озадачивает и сбивает с пути мое приобретение знаний, которое вызывает у меня головную боль.

Как создать файл с именем, указанным в командной строке?

Ответы [ 2 ]

3 голосов
/ 03 декабря 2011

Вы спрашиваете, как получить строку из командной строки для именования открываемого файла?

#include <iostream>
#include <cstdlib>
#include <fstream>

int main(int argc,char *argv[]) {
    if(2>argc) {
        std::cout << "you must enter a filename to write to\n";
        return EXIT_FAILURE;
    }
    std::ofstream fout(argv[1]); // open a file for output
    if(!fout) {
        std::cout << "error opening file \"" << argv[1] << "\"\n";
        return EXIT_FAILURE;
    }
    fout << "Hello, World!\n";
    if(!fout.good()) {
        std::cout << "error writing to the file\n";
        return EXIT_FAILURE;
    }
    return EXIT_SUCCESS;
}
0 голосов
/ 03 декабря 2011

Вам необходимо проанализировать параметры командной строки и использовать один из них в качестве имени файла для вашего файла.см. этот код:

#include <stdio.h>

int main ( int argc, char *argv[] )
{
    if ( argc != 2 ) /* argc should be 2 for correct execution */
    {
        /* We print argv[0] assuming it is the program name */
        printf( "usage: %s filename", argv[0] );
    }
    else 
    {
        // We assume argv[1] is a filename to open
        FILE *file = fopen( argv[1], "r" );

        /* fopen returns 0, the NULL pointer, on failure */
        if ( file == 0 )
        {
            printf( "Could not open file\n" );
        }
        else 
        {
            int x;
            /* read one character at a time from file, stopping at EOF, which
               indicates the end of the file.  Note that the idiom of "assign
               to a variable, check the value" used below works because
               the assignment statement evaluates to the value assigned. */
            while  ( ( x = fgetc( file ) ) != EOF )
            {
                printf( "%c", x );
            }
            fclose( file );
        }
    }
}

Подробнее см. здесь: http://www.cprogramming.com/tutorial/c/lesson14.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...