#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,但是我似乎不能让这个程序工作,我做错了什么吗?它可以编译,但当我运行它时,它会给我分段错误(核心转储)或崩溃。
发布于 2015-04-04 10:33:38
您缺少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来显示所有的警告,以便更容易地发现这些错误!
发布于 2015-04-04 10:36:01
尝试修复这些行:
char *word1 = 'Holy';
char *word2 = 'Moly';至:
char *word1 = "Holy";
char *word2 = "Moly";这是因为单引号仅用于单个字符,而不是字符串值。始终注意编译器警告,特别是在处理指针时。如果没有启用编译器警告,请尝试按照Darwin57721解释的那样启用它们。
https://stackoverflow.com/questions/29442068
复制相似问题