dodawanie tekstu do tablicy znaków

0

Witam,
Mam taki problem. Odczytuje z pliku nazwe kategorii do tablicy charow a nastepnie do tej tablicy chce dodac tekst '.txt' ale nie mam pojecia jak to zrobic. Jak robie strcat to mi laczy ale niestety z pustymi znakami tablicy.

char *t[10],*t1[6],*t3[25];
char haslo[50];  
  
plik = fopen( "hasla.txt", "r" );
                        int losek=losujkat();
                        for (i = 0; i <= losek; i++){
                        t3[i] = fgets (haslo, 15, plik);
                        }
                        fclose(plik1);

To losuje kategorie np ZWIERZETA
no i teraz chce odczytac hasla z pliku z wybranej kategorii czyli w tym przypadku ZWIERZETA.txt i nie wiem jak polaczyc to ZWIERZETA z .txt. Prosze o pomoc

                        plik1 = fopen(        , "r" );
                        los1=(rand() % 5);
                        for (i = 0; i <= los1; i++){
                        t1[i] = fgets (napis, 50, plik1);
                        }
                        fclose(plik1);

Próbowałem w ten sposób ale nie dało rady

char hasloo[5]={'.','t','x','t','\0'};
strcat(haslo,hasloo);
ale dopelnia mi do 50 pustymi znakami.

0
kamulator napisał(a)

Próbowałem w ten sposób ale nie dało rady

char hasloo[5]={'.','t','x','t','\0'};
strcat(haslo,hasloo);
ale dopelnia mi do 50 pustymi znakami.

To dość... dziwne.
Po pierwsze, dlaczego nie:

char  *hasloo = ".txt";

Po drugie, używaj strncat().
Po trzecie:

#include <stdio.h>
#include <string.h>

int main(void) {
        char    *ext = ".txt", fname[50];

        strncpy(fname, "test", 50);
        strncat(fname, ext, 50);

        printf("%s\n", fname);

        return 0;
};

czy to Ci działa?

0

Po pierwsze, dlaczego nie:

char  *hasloo = ".txt";

Dlatego, że tak robić nie należy:a.cpp:4:15: warning: deprecated conversion from string constant to 'char*'
Jak już, to

    const char *hasloo = ".txt";

albo char hasloo[] = ".txt";

to ostatnie jest równoważne z<code class="cpp">    char hasloo[5] = ".txt";
0
Azarien napisał(a)

Po pierwsze, dlaczego nie:

char  *hasloo = ".txt";

Dlatego, że tak robić nie należy.a.cpp:4:15: warning: deprecated conversion from string constant to 'char*'

C++.... Mój przykład był w C.

[beorn@nika ~]$ gcc -o test -Wall test.c
[beorn@nika ~]$ g++ -o test -Wall test.c
test.c: In function ‘int main()’:
test.c:6:14: warning: deprecated conversion from string constant to ‘char*’

1 użytkowników online, w tym zalogowanych: 0, gości: 1