如何在字符串末尾添加字符

时间:2011-10-27 18:47:57

标签: c

我有一个文件复制程序,它从一个文件中获取并粘贴到另一个文件指针中。但是,我不想从用户输入中获取targetname,而是只想添加一个' 1'在输入文件名的末尾并保存。所以,我试过这样的事情......

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

是的,这似乎很愚蠢,但我是初学者,需要一些帮助,请尽快回复。谢谢:D

P.S。想要它是纯粹的C.我相信点运算符可以在C ++中工作..或至少我认为..嗯

还有一件事,我已经知道了strcat函数..如果我使用它,那么我必须在数组中定义大小......嗯。有没有办法像fopen那样做(argv [1] +"额外"," w")

5 个答案:

答案 0 :(得分:6)

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

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;
}

答案 1 :(得分:3)

查看strcat

一个例子:

#include <string.h>
char alpha[14] = "something";
strcat(alpha, " bla"); // "something bla"
printf("%s\n", alpha);

答案 2 :(得分:1)

使用点不起作用。

您正在寻找的功能称为strcat

答案 3 :(得分:1)

不幸的是。不适用于c ++。

有点不优雅但有效的方法可能是做到以下几点。

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

答案 4 :(得分:-3)

在C中连接字符串使用strcat(str2, str1)

strcat(argv[1],"1")将连接字符串。此外,单引号生成文字字符,而双引号生成文字字符串。区别在于空终止符。