1.类别不同。
'\0' 是字符型char,0是整型int;
2.占用长度不一样。
字符型变量用于存储一个单一字符,在 C 语言中用 char 表示,其中每个字符变量都会占用 1 个字节(8位二进制数)。整型int在内存中占用空间为四个字节(32位二进制数)
3.表现形式不一样。
字符'\0' :ASCII码为0,表示一个字符串结束的标志。这是转义字符(整体视为一个字符)。由于内存中存储字符,依然是存储的是对应字符集的字符编码;所以内存中的表现形式为00000000
整数0 :内存中表示为:00000000 00000000 00000000 00000000;虽然都是0,但是跟上面字符'\0'存储占用长度是不一样的。
扩展资料:
其实所有编程语言,拥有转义字符的原因基本上是两点:
一、使用转义字符来表示字符集中定义的字符,比如ASCll里面的控制字符及回车换行等字符,这些字符都没有现成的文字代号。所以只能用转义字符来表示 。
二、某一些特定的字符在编辑语言中被定义为特殊用途的字符。这些字符由于被定义为特殊用途,它们失去了原有的意义。
比如说Html中,<被HTML定义为标签的开始,所以当我们转入<时,HTML就会把它当作为开始,而不是当作一个<来看待。再如PHP 的双引号("),被PHP定义为字符串的外围标签,所以如果你在一对双引号里面,还想要使用双引号,只能使用转义字符了。
参考资料:
百度百科-转义字符
没有区别,写t[j]='\0'与写t[j]=0效果一样。因为'\0'是预定义的符号常量,其值就是0。'\0'常用于字符串结束标记,而0就是普通的即时常量,所以代码中给字符数组最后一位添加结束标记形成字符串时写'\0'而不写0具有提示意义,便于阅读,没有别的意思。下面代码可验证它们的效果一样:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
char a=0,b='\0',m[]={'1','2','3','4','5',0},n[]={'a','b','c','\0'};
printf("a = %d\nb = %d\nm = %s\nn = %s\n",a,b,m,n);
return 0;
}
你的程序是不是不完整?warning、error一大堆。。。
好吧,先解释你的问题。
0的ASCII码为048,‘\0’的为000,本质上不同。‘\0’才是结束符(C-string中),‘\0’=0(码)=NULL,是空与结束的标志,控制字符之一。
题意如果是使得字符串结束,应该用‘\0’而不是0。
你的程序的其他问题:
1、字符数组越界了吧。。。既能导致一大堆烫烫烫什么的出现也可以使得程序直接崩溃。
2、NONO()在主函数中未定义,引用出错
3、文件路径不对(在你的写文件函数中)
如果可以的话,把题目给我,我以你的程序为架子改进下再给你试试。
数字和p-(P-)记数法(C99)
%c 字符
%d 有符号十进制整数
%f 浮点数(包括float和doulbe)
%e(%E) 浮点数指数输出[e-(E-)记数法]
%g(%G) 浮点数不显无意义的零"0"
%i 有符号十进制整数(与%d相同)
%u 无符号十进制整数
%o 八进制整数 e.g. 0123
%x(%X) 十六进制整数0f(0F) e.g. 0x1234
%p 指针
%s 字符串
%% "%"
2.标志
左对齐:"-" e.g. "%-20s"
右对齐:"+" e.g. "%+20s"
空格:若符号为正,则显示空格,负则显示"-" e.g. "% 6.2f"
#:对c,s,d,u类无影响;对o类,在输出时加前缀o;对x类,在输出时加前缀0x;
对e,g,f 类当结果有小数时才给出小数点。
3.格式字符串(格式)
〔标志〕〔输出最少宽度〕〔.精度〕〔长度〕类型
"%-md" :左对齐,若m比实际少时,按实际输出。
"%m.ns":输出m位,取字符串(左起)n位,左补空格,当n>m or m省略时m=n
e.g. "%7.2s" 输入CHINA
输出" CH"
"%m.nf":输出浮点数,m为宽度,n为小数点右边数位
e.g. "%3.1f" 输入3852.99
输出3853.0
长度:为h短整形量,l为长整形量
文章出处:
可以。 '\0'表示取ASCII码为0的字符,也就是0。