C - sprintf和打印字符串有问题

时间:2015-04-04 02:26:55

标签: c printf

#include <stdio.h>
#include <string.h>
int main() {
    char buf[100];

char *word1 = 'Holy';

char *word2 = 'Moly';
sprintf(buf,"%s %s", word1, word2);
printf("%s\n", buf);

}

您好我正在尝试使用sprintf,但是我似乎无法让这个程序工作,我做错了什么?它编译,但当我运行它时,它给我分段错误(核心转储)或它崩溃。

2 个答案:

答案 0 :(得分:2)

您缺少char*

的双引号
#include <stdio.h>
#include <string.h>

int main() {
    char buf[100];
    char *word1 = "Holy";
    char *word2 = "Moly";
    sprintf(buf,"%s %s", word1, word2);
    printf("%s",buf);
}

编辑:不要忘记使用gcc -Wall显示所有警告,以便更容易发现这些错误! :d

答案 1 :(得分:1)

尝试修复这些行:

char *word1 = 'Holy'; 
char *word2 = 'Moly';

为:

char *word1 = "Holy";
char *word2 = "Moly";

这是因为单引号仅用于单个字符而不是字符串值。 始终注意编译器警告,尤其是在处理指针时。如果没有启用编译器警告,请尝试按照Darwin57721的说明启用它们。