Hoe een karakter aan het einde van de string toe te voegen

  I have a file copy program that takes from one file and pastes in another file pointer. But, instead of getting targetname from user input i'd like to just add a '1' at the end of the input filename and save. So, I tried something like this...

       .... header & inits ....
       fp=fopen(argv[1],"r");
       fq=fopen(argv[1].'1',"w");
       .... file copy code ....

Ja, het lijkt stom, maar ik ben een beginner en heb wat hulp nodig, reageer snel. Bedankt: D

Postscriptum Wil het in pure C. Ik geloof dat de dot-operator kan werken in C ++ .. of tenminste denk ik .. hmm

Nog een ding, ik ben al op de hoogte van de strcat-functie. Als ik het gebruik, dan zal ik de grootte in de array moeten definiëren ... hmm. is er geen manier om het te doen zoals fopen (argv [1] + "extra", "w")

3
De operator . brengt geen strings samen in C of C ++, het is voor lidtoegang voor zaken als structinstanties. Wat u probeert te doen is concateneren/toevoegen van strings, zie hier: stackoverflow.com/questions/308695/c- koord-aaneenschakeling
toegevoegd de auteur wkl, de bron

5 antwoord

#include 
#include 
#include 

char* stradd(const char* a, const char* b){
    size_t len = strlen(a) + strlen(b);
    char *ret = (char*)malloc(len * sizeof(char) + 1);
    *ret = '\0';
    return strcat(strcat(ret, a) ,b);
}

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

    char *str = stradd(argv[1], "extra");

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

    free(str);

    return 0;
}
5
toegevoegd
bedankt! dit loste mijn probleem op: D
toegevoegd de auteur Saifur Rahman Mohsin, de bron

Kijk eens naar strcat :

Een voorbeeld:

#include 
char alpha[14] = "something";
strcat(alpha, " bla");//"something bla"
printf("%s\n", alpha);
3
toegevoegd
Je hebt inderdaad gelijk. :)
toegevoegd de auteur Morten Kristensen, de bron
Het gebruik van bèta is overbodig. strcat zal in feite de "bla" in het gebied achtergelaten door alpha plaatsen. Vervolgens wordt bèta = alfa ingesteld. je zou het volgende hebben: Before: * alpha is "something" after: * alpha is "somethingbla" en beta = alpha
toegevoegd de auteur boboquack, de bron

In C to concatenate a string use strcat(str2, str1)

strcat(argv[1],"1") will concatenate the strings. Also, single quotes generate literal characters while double quotes generate literal strings. The difference is the null terminator.

3
toegevoegd
... maar deze vraag is niet getagd als C ++.
toegevoegd de auteur Jon, de bron
Alleen voor tekenreeksen die + overbelast zijn. Door dit aan de karakters toe te voegen zullen hun aanwijzingen worden toegevoegd.
toegevoegd de auteur Pubby, de bron

Het gebruik van de punt zal niet werken.

De functie waarnaar u op zoek bent, heet strcat .

1
toegevoegd

Helaas . zou niet werken in C ++.

Een enigszins onelegante maar effectieve methode zou kunnen zijn om het volgende te doen.

int tempLen=strlen(argv[1])+2;
char* newName=(char*)malloc(tempLen*sizeof(char));
strcpy(newName,argv[1]);
strcat(newName,"1");
1
toegevoegd