передача вывода в новый файл - PullRequest
0 голосов
/ 22 августа 2010

Я полный нуб к ц. Я скачал код из интернета. Генерирует все возможные комбинации символов. Я хочу перенести этот вывод в текстовый файл. Я пробовал несколько вещей, но не смог этого сделать. Кто-нибудь может предложить мне необходимые изменения? Вот код.а

EDIT: я изменил команду put на fputs. я перепробовал все возможные комбинации.fputs (& str [1], f), fputs ("& str [1]", "f"), fputs ("& str [1]", f) и fputs (& str, "f") , но ничего не получалось. что делать дальше?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MINCHAR 33
#define MAXCHAR 126

char *bruteforce(int passlen, int *ntries);

int main(void) {

    int i, wdlen, counter;
    char *str;
    clock_t start, end;
    double elapsed;
    FILE *myfile;
    myfile = fopen("ranjit.txt","w");

    do {
        printf("Word length... ");
        scanf("%d", &wdlen);
    } while(wdlen<2);

    start = clock();

    bruteforce(wdlen, &counter);

    end = clock();

    elapsed = ((double) (end - start)) / CLOCKS_PER_SEC;
    fprintf(myfile,"\nNum of tries... %d \n",counter);
    fprintf(myfile,"\nTime elapsed... %f seconds\n",elapsed);
    return counter;

}

char *bruteforce(int passlen, int *ntries) {

    int i;
    char *str;
    FILE *f;
    f = fopen("sandip.txt","w");

    *ntries=0;

    passlen++;

    str = (char*)malloc( passlen*sizeof(char) );

    for(i=0; i<passlen; i++) {
        str[i]=MINCHAR;
    }
    str[passlen]='\0';

    while(str[0]<MINCHAR+1) {
        for(i=MINCHAR; i<=MAXCHAR; i++) {
            str[passlen-1]=i;
            (*ntries)++;
            fputs("&str[1]",f);
        }

        if(str[passlen-1]>=MAXCHAR) {
            str[passlen-1]=MINCHAR;
            str[passlen-1-1]++;
        }

        for(i=passlen-1-1; i>=0; i--) {
            if(str[i]>MAXCHAR) {
                str[i]=MINCHAR;
                str[i-1]++;
            }
        }
    }

    return NULL;

}

Ответы [ 2 ]

2 голосов
/ 22 августа 2010

Заменить puts на fputs, который принимает FILE* в качестве второго аргумента.Вам нужно будет передать это в bruteforce.

0 голосов
/ 22 августа 2010

Для чего бы то ни было, вы можете использовать перенаправление оболочки для создания файла с выводом ...

./myprogram > output.txt
...