C 在数组中写入字符*,然后在文件中写入字符*

C 在数组中写入字符*,然后在文件中写入字符*,c,C,这是我的一段代码: 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); fclo

这是我的一段代码:

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);
结果的一个例子是:
a B®;pgAdmin III-浏览器
什么是
a B®


当我添加
printf(“%s”,appname)
时,我可以在控制台中看到正确的名称,在上面的示例
pgAdmin III-Browser
中,为什么?

句子
未初始化,您正在向其中添加一些内容。你最终得到的是随机的垃圾,然后是你的文本。使用strcpy
或初始化
语句
变量。

语句
未初始化,您正在向其添加内容。你最终得到的是随机的垃圾,然后是你的文本。使用strcpy
或初始化
语句
变量。

将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;
    }
#包括
#包括
int main()
{
char语句[400];
const char*appname=“字符串检查”;
strcpy(句子,appname);
printf(“%s\n”,句子);
返回0;
}

将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;
    }
#包括
#包括
int main()
{
char语句[400];
const char*appname=“字符串检查”;
strcpy(句子,appname);
printf(“%s\n”,句子);
返回0;
}

如果使用unicode,请阅读
man-fwprintf
char-statement[400]={0};使用gcc,会导致“使用未初始化的值”错误。所以初始化句子,在C中它本身就是一些随机值(在堆栈上),如果你使用unicode,读
manfwprintf
char-statement[400]={0};使用gcc,会导致“使用未初始化的值”错误。所以初始化句子,在C中它本身就是我添加的一些随机值(在堆栈上)
strcpy(句子“\0”)现在它可以工作了。非常感谢你@你可以简单地写
字符句子[400]={'\0'}取而代之。如果这篇文章回答了你的问题,请点击左边的复选标记,将其视为正确答案现在它可以工作了。非常感谢你@你可以简单地写
字符句子[400]={'\0'}取而代之。如果这篇文章回答了你的问题,请点击左边的复选标记,将其视为正确答案。