Як додати символ в кінці рядка

  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 ....

Так, це здається дурним, але я новачок і потребую певної допомоги, незабаром відповідь. Дякую: Д.

П.С. Хочеш це в чистого C. Я вважаю, що оператор крапки може працювати в C ++ .. або, принаймні, я думаю .. хмм

Ще одна річ, я вже знаю про функцію strcat .. Якщо я її використовую, то мені доведеться визначити розмір у масиві ... хмм. Чи не можна зробити це, як Fopen (argv [1] + "extra", "w")

3
Оператор . не об'єднує рядки в C або C ++, це для доступу учасника для таких речей, як struct instance. Те, що ви намагаєтеся зробити, це об'єднати/додавати рядки, дивіться тут: stackoverflow.com/questions/308695/c- string-concatenation
додано Автор wkl, джерело

5 Відповіді

#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
додано
Дякую! це вирішило моє питання: D
додано Автор Saifur Rahman Mohsin, джерело

Подивіться strcat .

Приклад:

#include 
char alpha[14] = "something";
strcat(alpha, " bla");//"something bla"
printf("%s\n", alpha);
3
додано
Ви дійсно прав. :)
додано Автор Morten Kristensen, джерело
Використання бета є зайвим. strcat по суті поставитиме "bla" в область, залишену альфа. Потім буде встановлено бета = альфа. ви мали б наступне: До: * альфа - "щось" після: * alpha - "somethingbla" і beta = alpha
додано Автор boboquack, джерело

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
додано
... але це питання не позначено C ++.
додано Автор Jon, джерело
Лише для струн, які мають + перевантажені. Виконуючи це до символів, додаватимуться вказівки.
додано Автор Pubby, джерело

Використання точки не спрацює.

Функцію, яку ви шукаєте, називається strcat .

1
додано

На жаль не буде працювати в c ++.

Дещо неелегантним, але ефективним методом може бути наступне.

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