reed8808 发表于 2014-8-10 17:04:02

C语言宏定义

#include <stdio.h>
#include <string.h>
#define STR(str1, str2, str3, sum) strcat(str1,strcat(str2,strcat(sum, str3)))
void main(void)
{
    char s1[]="I Love ";
    char s2[]="China ";
    char s3[]="Forever ";
    char sum[]=" ";
    STR(s1, s2, s3, sum);
    printf("%s\n",s1);
    printf("%s\n",s2);
    printf("%s\n",s3);
    printf("%s\n",sum);

}
请问我这个程序有什么问题?为什么不能运行呢?

流行语 发表于 2014-8-10 17:04:03

麻烦你以后直接贴代码,用附加图片中的方法贴代码。你的程序问题是当你字符串连接时,开辟的存储空间不够。我 改了一下。#include <stdio.h>
#include <string.h>
#define STR(str1, str2, str3, sum) strcat(str1,strcat(str2,strcat(sum, str3)))
void main(void)
{
   char s1="I Love ";
   char s2="China ";
   char s3="Forever ";
   char sum=" ";
   STR(s1, s2, s3, sum);
   printf("%s\n",s1);
   printf("%s\n",s2);
   printf("%s\n",s3);
   printf("%s\n",sum);

}

careless 发表于 2014-8-10 17:43:35

頂支持一下

沉默默 发表于 2014-8-10 19:19:44

楼上正解

cable5881 发表于 2014-8-10 20:08:59

同问!!!!!!!!!!!!!!

reed8808 发表于 2014-8-11 20:46:01

流行语 发表于 2014-8-10 18:47
麻烦你以后直接贴代码,用附加图片中的方法贴代码。你的程序问题是当你字符串连接时,开辟的存储空间不够。 ...

顺利解决,太感谢了!支持小甲鱼老师!

lzkjyang 发表于 2014-8-12 00:52:47

src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。
页: [1]
查看完整版本: C语言宏定义