一个一个char *的数组,并在后一个文件
这是我的一段代码:一个一个char *的数组,并在后一个文件
char sentence[400];
FILE *f;
const char *appname = application_name; //where the application_name comes from the program
strcat(sentence,appname);
... //I add more string
f = fopen ("Test.txt", "a+");
...
fprintf(f,"%s\n",sentence);
fclose (f);
结果的一个例子是:àB®pgAdmin III - Browser
什么是àB®
?
当我添加printf("%s",appname)
我可以在控制台中看到正确的名称,在pgAdmin III - Browser
以上的例子中,为什么?
sentence
未初始化,您正在添加一些内容。最终结果是随机垃圾,随后是文字。使用strcpy
或初始化sentence
变量。
我添加了'strcpy(sentence,“\ 0”);'现在它工作。非常感谢! – DarkCoffee 2013-03-14 07:19:00
@DarkCoffee你可以简单地写'char句子[400] = {'\ 0'};'而不是。如果这个帖子回答了你的问题,请点击左侧的复选标记,接受它为正确的。 – Lundin 2013-03-14 07:21:27
将strcat改为strcpy你的程序会正常工作。
#include <stdio.h>
#include <string.h>
int main()
{
char sentence[400];
const char *appname = "string_check";
strcpy(sentence,appname);
printf("%s\n", sentence);
return 0;
}
如果您使用unicode,请阅读'man fwprintf' – 2013-03-14 07:15:26
char sentence [400] = {0};应该适合你... – 2013-03-14 07:18:13
使用gcc,它会导致“使用未初始化的值”错误。所以初始化句子,这在C本身是一个随机值(在堆栈上) – 2013-03-14 07:21:39