得意的屁 发表于 2016-9-12 16:57:19

段错误 程序访问的非法的内存

百度查是这么说的没懂 段错误 程序访问的非法的内存
#include <stdio.h>

#define URL "http://www.fishc.com"
#define NAME "鱼C工作室"
#define BOSS "小甲鱼"
#define YEAR 2010
#define MONTH 5
#define DAY 20

int main()
{       
        printf("%s 成立于%s 年%s 月 %s 日\n", NAME, YEAR, MONTH, DAY);
        printf("%s 是%s 创立的......\n", NAME, BOSS);
        printf("%s 的域名%s \n", NAME, URL);

        return 0;
}

请师兄们指教下

得意的屁 发表于 2016-9-12 17:15:58

本帖最后由 得意的屁 于 2016-9-12 17:21 编辑

又打一遍 问题找到了 不过还是有些不懂 请问
%s后面的参数当字符串处理
%d 后面的参数当整数处理

printf("%s 成立于 %d 年%d 月%d 日\n', NAME, YEAR, MONTH, DAY);

这里 NAME 定义 是鱼C工作室, 其他三个是数字

在句子中 %s 和 %d后面不全是大写的英文么?MANE YEAR MONTH DAY 不都是字符串么 为什么用 %s 不行呢?{:5_93:}

SingleLove 发表于 2016-9-12 18:06:30

#define YEAR "2010"; 是不是字符串看的不是宏定义的标识符;而是标识符后面的 常量;比如我加个双引号就成了字符串常量了

#define MONTH 5这个就只是整型常量 ;

你S%打印没问题 都用双引号扩起来就好了

得意的屁 发表于 2016-9-12 18:59:32

SingleLove 发表于 2016-9-12 18:06
#define YEAR "2010"; 是不是字符串看的不是宏定义的标识符;而是标识符后面的 常量;比如我加个双引号就 ...

基本明白了 我就是定义没整透彻是吧
%c 后面的参数当字符处理
%f 后面的参数当浮点数处理
%s 后面的参数当字符串处理
%d 后面的参数当整数处理

%d 打印带符号的
%u 打印不带符号的 是么 

SingleLove 发表于 2016-9-12 21:15:51

是的;这类问题先百度或者找找书本,都有讲解的

Krant5 发表于 2016-9-12 22:41:48

#define定义的东西类型不明的,只是简单的宏替换而已,最好用const定义变量比较好,

飞飞123 发表于 2016-9-12 22:58:18

因为#define定义是宏定义,类型没有表明,所以都用字符串%s输出,我也在学C,有问题可以问我

得意的屁 发表于 2016-9-13 13:53:44

飞飞123 发表于 2016-9-12 22:58
因为#define定义是宏定义,类型没有表明,所以都用字符串%s输出,我也在学C,有问题可以问我

好的谢谢

屁哥 发表于 2016-9-13 20:05:55

SingleLove 发表于 2016-9-12 18:06
#define YEAR "2010"; 是不是字符串看的不是宏定义的标识符;而是标识符后面的 常量;比如我加个双引号就 ...

请教下师兄 改双引号 改完了 出现这玩意了不让保存请问师兄遇到过没

屁哥 发表于 2016-9-13 22:20:58

可能双引号不能后补 要成对打吧

SingleLove 发表于 2016-9-14 08:00:58

屁哥 发表于 2016-9-13 20:05
请教下师兄 改双引号 改完了 出现这玩意了不让保存请问师兄遇到过没

你把这句英文复制下来到百度一搜就会有解决方法了
应该是文件访问权限的问题;只读?

屁哥 发表于 2016-9-14 09:02:53

SingleLove 发表于 2016-9-14 08:00
你把这句英文复制下来到百度一搜就会有解决方法了
应该是文件访问权限的问题;只读?

这段文字能复制? 怎么复制 快教教 有学一招 谢谢
页: [1]
查看完整版本: 段错误 程序访问的非法的内存