在C中将字符串添加到char数组

sky*_*erl 1 c arrays string fgets char

我有一个名为buf的C数组.这是它的定义:

char buf[1024];

现在,我当前的代码来自stdin并用于fgets()设置该数组,但是我希望使用代码来设置它.现在设置buf的行看起来像这样:

fgets(buf, 1024, stdin);

基本上,我想替换stdin,比如......"My String".最好的方法是什么?

Ced*_* H. 8

sprintf例如,在这里寻找:Cpp参考

编辑:

sprintf(buf, "My string with args %d", (long) my_double_variable);
Run Code Online (Sandbox Code Playgroud)

编辑2:

正如建议避免溢出(但这是标准C),您可以使用snprintf.


use*_*313 5

snprintf只是C99而不是C89,sprintf_s / strcpy_s只是MSVC,不是C89,不是C99。

char *mystr="come from stdin or file or ...";
char buf[1024];
...
memset(buf,0,sizeof buf);
strncpy(buf,mystr,(sizeof buf)-1);
Run Code Online (Sandbox Code Playgroud)

或非数组:

#define BUFLEN 512
char *mystr="come from stdin or file or ...";
char *buf;
...
char *buf=calloc(1,BUFLEN);
strncpy(buf,mystr,BUFLEN-1);
Run Code Online (Sandbox Code Playgroud)

它适用于所有ANSI C环境。