我有一个文件复制程序,它从一个文件中获取并粘贴到另一个文件指针中。但是,我不想从用户输入中获取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")
答案 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")
将连接字符串。此外,单引号生成文字字符,而双引号生成文字字符串。区别在于空终止符。