#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,但是我似乎无法让这个程序工作,我做错了什么?它编译,但当我运行它时,它给我分段错误(核心转储)或它崩溃。
答案 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的说明启用它们。