c语言输出字符串中%o与%04o有什么不同,输入1,为什么输出的也是1

标准C语言的输入输出流(i/o)方法详解 - 程序猴 - 博客园
随笔 - 122, 文章 - 1, 评论 - 35, 引用 - 0
-&详细说明
标准 C I/O
#include &stdio.h&
void clearerr( FILE *stream );
clearerr函数重置错误标记和给出的流的EOF指针. 当发生错误时,你可以使用判断实际上发生了何种错误.
相关主题: , , 和.
#include &stdio.h&
int fclose( FILE *stream );
函数fclose()关闭给出的文件流, 释放已关联到流的所有缓冲区. fclose()执行成功时返回0,否则返回EOF.
相关主题: , , 和.
#include &stdio.h&
int feof( FILE *stream );
函数feof()在到达给出的文件流的文件尾时返回一个非零值.
相关主题: , , , 和 .
#include &stdio.h&
int ferror( FILE *stream );
ferror()函数检查stream(流)中的错误, 如果没发生错误返回0,否则返回非零. 如果发生错误, 使用检测发生什么错误.
相关主题: , , ,
#include &stdio.h&
int fflush( FILE *stream );
如果给出的文件流是一个输出流,那么fflush()把输出到缓冲区的内容写入文件. 如果给出的文件流是输入类型的,那么fflush()会清除输入缓冲区. fflush()在调试时很实用,特别是对于在程序中输出到屏幕前发生错误片段时. 直接调用 fflush( STDOUT )输出可以保证你的调试输出可以在正确的时间输出.
printf( "Before first call\n" );
fflush( STDOUT );
shady_function();
printf( "Before second call\n" );
fflush( STDOUT );
dangerous_dereference();
相关主题: , , , , , 和.
#include &stdio.h&
int fgetc( FILE *stream );
fgetc()函数返回来自stream(流)中的下一个字符,如果到达文件尾或者发生错误时返回EOF.
相关主题: , , , 和.
#include &stdio.h&
int fgetpos( FILE *stream, fpos_t *position );
fgetpos()函数保存给出的文件流(stream)的位置指针到给出的位置变量(position)中. position变量是fpos_t类型的(它在stdio.h中定义)并且是可以控制在FILE中每个可能的位置对象. fgetpos()执行成功时返回0,失败时返回一个非零值.
相关主题: , 和 .
#include &stdio.h&
char *fgets( char *str, int num, FILE *stream );
函数fgets()从给出的文件流中读取[num - 1]个字符并且把它们转储到str(字符串)中. fgets()在到达行末时停止,在这种情况下,str(字符串)将会被一个新行符结束. 如果fgets()达到[num - 1]个字符或者遇到EOF, str(字符串)将会以null结束.fgets()成功时返回str(字符串),失败时返回NULL.
#include &stdio.h&
FILE *fopen( const char *fname, const char *mode );
fopen()函数打开由fname(文件名)指定的文件, 并返回一个关联该文件的流.如果发生错误, fopen()返回NULL. mode(方式)是用于决定文件的用途(例如 用于输入,输出,等等)
Mode(方式)
打开一个用于读取的文本文件
创建一个用于写入的文本文件
附加到一个文本文件
打开一个用于读取的二进制文件
创建一个用于写入的二进制文件
附加到一个二进制文件
打开一个用于读/写的文本文件
创建一个用于读/写的文本文件
打开一个用于读/写的文本文件
打开一个用于读/写的二进制文件
创建一个用于读/写的二进制文件
打开一个用于读/写的二进制文件
FILE *input = fopen( "stuff", "r" );
ch = getc( input );
#include &stdio.h&
int fprintf( FILE *stream, const char *format, ... );
fprintf()函数根据指定的format(格式)(格式)发送信息(参数)到由stream(流)指定的文件. fprintf()只能和一样工作. fprintf()的返回值是输出的字符数,发生错误时返回一个负值.
char name[20] = "Mary";
out = fopen( "output.txt", "w" );
if( out != NULL )
fprintf( out, "Hello %s\n", name );
#include &stdio.h&
int fputc( int ch, FILE *stream );
函数fputc()把给出的字符ch写到给出的输出流. 返回值是字符, 发生错误时返回值是EOF.
相关主题: , , , , 和.
#include &stdio.h&
int fputs( const char *str, FILE *stream );
fputs()函数把str(字符串)指向的字符写到给出的输出流. 成功时返回非负值, 失败时返回EOF.
相关主题: , , , , 和.
#include &stdio.h&
int fread( void *buffer, size_t size, size_t num, FILE *stream );
函数fread()读取[num]个对象(每个对象大小为size(大小)指定的字节数),并把它们替换到由buffer(缓冲区)指定的数组. 数据来自给出的输入流. 函数的返回值是读取的内容数量...
使用或判断到底发生哪个错误.
相关主题: , ,, 和.
#include &stdio.h&
FILE *freopen( const char *fname, const char *mode, FILE *stream );
freopen()函数常用于再分配一个以存在的流给一个不同的文件和方式(mode).在调用本函数后,给出的文件流将会用mode(方式)指定的访问模式引用fname(文件名). freopen()的返回值是新的文件流,发生错误时返回NULL.
#include &stdio.h&
int fscanf( FILE *stream, const char *format, ... );
函数fscanf()以的执行方式从给出的文件流中读取数据. fscanf()的返回值是事实上已赋值的变量的数,如果未进行任何分配时返回EOF.
#include &stdio.h&
int fseek( FILE *stream, long offset, int origin );
函数fseek()为给出的流设置位置数据. origin的值应该是下列值其中之一(在stdio.h中定义):
从文件的开始处开始搜索
从当前位置开始搜索
从文件的结束处开始搜索
fseek()成功时返回0,失败时返回非零. 你可以使用fseek()移动超过一个文件,但是不能在开始处之前. 使用fseek()清除关联到流的EOF标记.
相关主题: , , , 和 .
#include &stdio.h&
int fsetpos( FILE *stream, const fpos_t *position );
fsetpos()函数把给出的流的位置指针移到由position对象指定的位置. fpos_t是在stdio.h中定义的. fsetpos()执行成功返回0,失败时返回非零.
相关主题: , 和 .
#include &stdio.h&
long ftell( FILE *stream );
ftell()函数返回stream(流)当前的文件位置,如果发生错误返回-1.
相关主题: 和 .
#include &stdio.h&
int fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
fwrite()函数从数组buffer(缓冲区)中, 写count个大小为size(大小)的对象到stream(流)指定的流. 返回值是已写的对象的数量.
相关主题: , , 和 .
#include &stdio.h&
int getc( FILE *stream );
getc()函数从stream(流)获取并返回下一个字符,如果到达文件尾返回EOF. getc()和fgetc()是一样的. 例如:
FILE *input = fopen( "stuff", "r" );
ch = getc( input );
while( ch != EOF ) {
printf( "%c", ch );
ch = getc( input );
相关主题: , , 和 .
#include &stdio.h&
int getchar( void );
getchar()函数从STDIN(标准输入)获取并返回下一个字符,如果到达文件尾返回EOF.
相关主题: , , 和 .
#include &stdio.h&
char *gets( char *str );
gets()函数从STDIN(标准输入)读取字符并把它们加载到str(字符串)里,直到遇到新行(\n)或到达EOF. 新行字符翻译为一个null中断符. gets()的返回值是读入的字符串,如果错误返回NULL.
相关主题: , ,和 .
#include &stdio.h&
void perror( const char *str );
perror()函数打印str(字符串)和一个相应的执行定义的错误消息到全局变量errno中.
#include &stdio.h&
int printf( const char *format, ... );
printf()函数根据format(格式)给出的格式打印输出到STDOUT(标准输出)和其它参数中.
字符串format(格式)由两类项目组成 - 显示到屏幕上的字符和定义printf()显示的其它参数. 基本上, 你可以指定一个包含文本在内的format(格式)字符串,也可以是映射到printf()其它参数的"特殊"字符. 例如本代码
char name[20] = "Bob";
int age = 21;
printf( "Hello %s, you are %d years old\n", name, age );
显示下列输出:
Hello Bob, you are 21 years old
%s 表示, "在这里插入首个参数,一个字符串." %d 表示第二个参数(一个整数)应该放置在那里. 不同的"%-codes"表示不同的变量类型, 也可以限制变量的长度.
带符号整数
带符号整数
科学计数法, 使用小写"e"
科学计数法, 使用大写"E"
使用%e或%f中较短的一个
使用%E或%f中较短的一个
无符号整数
无符号十六进制数, 用小写字母
无符号十六进制数, 用大写字母
参数应该是一个指向一个整数的指针 指向的是字符数放置的位置
一个'%'符号
一个位于一个%和格式化命令间的整数担当着一个最小字段宽度说明符,并且加上足够多的空格或0使输出足够长. 如果你想填充0,在最小字段宽度说明符前放置0. 你可以使用一个精度修饰符,它可以根据使用的格式代码而有不同的含义.
用%e, %E和 %f,精度修饰符让你指定想要的小数位数. 例如,
将会至少显示12位数字,并带有6位小数的浮点数.
用%g和 %G, 精度修饰符决定显示的有效数的位数最大值.
用%s,精度修饰符简单的表示一个最大的最大长度, 以补充句点前的最小字段长度.
所有的printf()的输出都是右对齐的,除非你在%符号后放置了负号. 例如,
将会显示12位字符,4位小数位的浮点数并且左对齐. 你可以修改带字母l和h%d, %i, %o, %u和 %x 等类型说明符指定长型和短型数据类型 (例如 %hd 表示一个短整数). %e, %f和 %g 类型说明符,可以在它们前面放置l指出跟随的是一个double. %g, %f和 %e 类型说明符可以置于字符'#'前保证出现小数点, 即使没有小数位. 带%x类型说明符的'#'字符的使用, 表示显示十六进制数时应该带'0x'前缀. 带%o类型说明符的'#'字符的使用, 表示显示八进制数时应该带一个'0'前缀.
你可以在输出字符串中包含 .
printf()的返回值是打印的字符数,如果发生错误则返回一个负值.
相关主题: 和 .
#include &stdio.h&
int putc( int ch, FILE *stream );
putc()函数把字符ch写到stream(流)中. 返回值是写入的字符, 发生错误时返回EOF. 例如:
input = fopen( "temp.cpp", "r" );
ch = getc( input );
while( ch != EOF ) {
printf( "%c", ch );
ch = getc( input );
显示"temp.cpp"的内容到屏幕.
相关主题: , , 和 .
#include &stdio.h&
int putchar( int ch );
putchar()函数把ch写到STDOUT(标准输出). 代码
putchar( ch );
putc( ch, STDOUT );
putchar()的返回值是被写的字符, 发生错误时返回EOF.
#include &stdio.h&
int puts( char *str );
函数puts()把str(字符串)写到STDOUT(标准输出)上. puts() 成功时返回非负值, 失败时返回EOF.
相关主题: , 和 .
#include &stdio.h&
int remove( const char *fname );
remove()函数删除由fname(文件名)指定的文件. remove()成功时返回0,如果发生错误返回非零.
#include &stdio.h&
int rename( const char *oldfname, const char *newfname );
函数rename()更改文件oldfname的名称为newfname. rename()成功时返回0,错误时返回非零.
#include &stdio.h&
void rewind( FILE *stream );
函数rewind()把文件指针移到由stream(流)指定的开始处, 同时清除和流相关的错误和EOF标记.
#include &stdio.h&
int scanf( const char *format, ... );
scanf()函数根据由format(格式)指定的格式从stdin(标准输入)读取,并保存数据到其它参数. 它和有点类似. format(格式)字符串由控制字符,空白字符和非空白字符组成. 控制字符以一个%符号开始,如下:
一个单一的字符
一个十进制整数
%e, %f, %g
一个浮点数
一个八进制数
一个字符串
一个十六进制数
一个等于读取字符数量的整数
一个无符号整数
一个字符集
一个精度符号
scanf()读取匹配format(格式)字符串的输入. 当读取到一个控制字符, 它把值放置到下一个变量. 空白(tabs, 空格等等)会跳过. 非空白字符和输入匹配, 然后丢弃. 如果是一个在%符号和控制符间的数量, 那么只有指定数量的字符转换到变量中. 如果scanf()遇到一个字符集(用%[]控制字符表示), 那么在括号中的任意字符都会读取到变量中. scanf()的返回值是成功赋值的变量数量, 发生错误时返回EOF.
相关主题: 和 .
#include &stdio.h&
void setbuf( FILE *stream, char *buffer );
setbuf()函数设置stream(流)使用buffer(缓冲区),如果buffer(缓冲区)是null,关闭缓冲. 如果使用非标准缓冲尺寸, 它应该由BUFSIZ字符决定长度.
相关主题: , , ,
#include &stdio.h&
int setvbuf( FILE *stream, char *buffer, int mode, size_t size );
函数setvbuf()设置用于stream(流)的缓冲区到buffer(缓冲区),其大小为size(大小). mode(方式)可以是:
_IOFBF, 表示完全缓冲
_IOLBF, 表示线缓冲
_IONBF, 表示无缓存
相关主题: ,
#include &stdio.h&
int sprintf( char *buffer, const char *format, ... );
sprintf()函数和类似, 只是把输出发送到buffer(缓冲区)中.返回值是写入的字符数量. 例如:
char string[50];
int file_number = 0;
sprintf( string, "file.%d", file_number );
file_number++;
output_file = fopen( string, "w" );
相关主题: , ,
#include &stdio.h&
int sscanf( const char *buffer, const char *format, ... );
函数sscanf()和类似, 只是输入从buffer(缓冲区)中读取.
相关主题: , ,
#include &stdio.h&
FILE *tmpfile( void );
函数tempfile()用一个独特的文件名打开一个临时文件,并返回一个到该文件的指针.如果发生错误则返回null.
相关主题: ,
#include &stdio.h&
char *tmpnam( char *name );
tmpnam()函数创建一个独特的文件名并保存在name中. tmpnam()最多可以调用TMP_MAX指定的次数.
相关主题: ,
#include &stdio.h&
int ungetc( int ch, FILE *stream );
函数ungetc()把字符ch放回到stream(流)中.
相关主题: ,
vprintf, vfprintf和 vsprintf
#include &stdarg.h&
#include &stdio.h&
int vprintf( char *format, va_list arg_ptr );
int vfprintf( FILE *stream, const char *format, va_list arg_ptr );
int vsprintf( char *buffer, char *format, va_list arg_ptr );
这些函数和非常相似, 和 的不同在于参数列表是一个指向一系列参数的指针. va_list在STDARG.H中定义,并且也可以被使用. 例如:
void error( char *fmt, ... ) {
va_start( args, fmt );
fprintf( stderr, "Error: " );
vfprintf( stderr, fmt, args );
fprintf( stderr, "\n" );
va_end( args );
exit( 1 );C语言中 标准输出.输入设备什么意思? 0和1不同情况代表什么意思_百度知道
C语言中 标准输出.输入设备什么意思? 0和1不同情况代表什么意思
提问者采纳
语言中的标准输入设备指键盘.不过现在新版本的程序还可以用鼠标功能也强大了许多.0和1可以指二进制也可以表示判断,输出设备指显示器
其他类似问题
输入设备的相关知识
其他1条回答
标准输入就是键盘之类的。标准输出就是显示屏
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
C语言的程序设计-数据的输入和输出!2
下载积分:200
内容提示:C语言的程序设计-数据的输入和输出!2 C语言的程序设计-数据的..
文档格式:PDF|
浏览次数:50|
上传日期: 08:36:15|
文档星级:
该用户还上传了这些文档
C语言的程序设计-数据的输入和输出!2.PDF
官方公共微信为什么这一段c语言程序的输出是 1,0,1,0 (简化了一下)啊? 求大神解释 第一个int a 是什么类型的变量呢?_百度知道
为什么这一段c语言程序的输出是 1,0,1,0 (简化了一下)啊? 求大神解释 第一个int a 是什么类型的变量呢?
printf(&n&n&n&void func(); func(); {
int a=1;,a),a).h& printf(&quot,a);no 1 a=%d\no 1 a=%d\void func(){ printf(&#include &;no 1 a=%d\}void main(){ int a=1;
提问者采纳
}这里面printf打印的它前面定义的a, 2;PAUSE&no 1 a=%d&#92, 0:原因也是fun()中打印语句只能访问到第一句的全局变量a,第一句的 } {
printf(&quot, char *argv[]){
return EXIT_SUCCESS;是全局变量, 1;
func()。如下,只要在这个文件中就能访问到;no 1 a=%d\打印的,第四个0;,a),访问他能访问到得距离他最近的变量。第一个1;n&;;n& func()。第三个1,被初始化为0;; }
system(&;n&quot,a),a):main函数中printf(&quot,a);}结果为;打印的就是它;
func(); printf(&n&quot, 0这是变量作用域的问题,a)。访问变量时;no 1 a=%d&#92:{
int a=1;}int main(no 1 a=%d&#92:main函数中执行func();n&quot:void func();
printf(&);
printf(&打印的,因fun()中打印语句只能访问到第一句的全局变量a。因为前面一句定义了一个a = 1;; {
int a=2,printf(&n&
func();no 1 a=%d\n&no 1 a=%d&#92,a);void func(){ printf(&quot。第二个0:1;;no 1 a=%d&#92,a)
提问者评价
哇擦擦,给力,谢谢啦哈~~20分送上
其他类似问题
按默认排序
其他2条回答
就明白了,任何变量别忘记初始化。最后一句能输出0就不错了。看看全局变量 私有变量的作用域。第一个a是全局变量
2楼正解。。。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁&& 查看话题
用C语言的编了一个简单程序
输入参数后 输出为什么是0? 求前辈们看看
#include&stdio.h&
float a,b,c,r,x,y;
scanf(&%f %f %f %f %f&,&a,&b,&x,&y,&r);
c=1/2*(4*x*r*a*b-2*x*r*a*y+2*b*r*a*y-2*b*r*y*x+4*a*b*y*x+(x*x)*r*y-2*x*x*r*a-2*x*x*r*b-2*b*b*r*a+2*b*b*r*x-4*a*a*b*x-2*a*a*b*y-4*a*b*b*x+2*a*a*x*y+4*a*x*x*b-2*a*x*x*y-2*b*x*x*y+2*a*a*b*b+2*a*a*x*x+2*b*b*x*x)*y/(-x*r+b*r-r*y+a*x-a*b+a*y+b*x-y*x)/(a*x-a*b+a*y+b*x-y*x);
printf(&l3=%f&,c);
用win-tc编的&&输入20.0 20.0 10.0 10.0 100.0 后输出的是0.000000
我用matlab算过 应该是50才对啊
前辈们帮帮忙&&我不会编程&&现在要用 是临时看书学的&&这个问题我真解决不了了
懒得给你找,一步一步检查吧 : Originally posted by Fleaves at
懒得给你找,一步一步检查吧 c=……那一串不用看吧& &就把他当成一个简单的式子就好& &已经编译成功了 : Originally posted by Fleaves at
懒得给你找,一步一步检查吧 c=……后面一长串没有问题的& &已经编译成功了 编译通过的话语法是没有问题的,检查一下算式吧 : Originally posted by Y向隅而泣Y at
编译通过的话语法是没有问题的,检查一下算式吧 明白了&&谢谢!&&可是算式在matlab里面可以计算的& &可能是两个语言的格式要求不一样吧 matlab与C连除的优先级有些区别的,再仔细看看。 C中1/2为0,1.0/2为0.5 C对不同数据精度不一样 同意9楼和10楼的! : Originally posted by usxhlj at
C中1/2为0,1.0/2为0.5 正解 : Originally posted by bennyf at
C对不同数据精度不一样 我把c=1/2*...& &改成了c=0.5...
也就是把1/2改成了0.5&&就好了& &这是什么原理? 谢谢楼上各位! 把1/2改成0.5就对了& &
苍天!&&第一次用C语言编程&&就耗了一个晚上...
因为是新手&&金币还不到5个& &就不给各位散金了啊
以后有了金币一定补上! 1/2是int格式相除,为0,所以应该改成1.0/2或者1/2.0.。。。 : Originally posted by lixiaofei001 at
1/2是int格式相除,为0,所以应该改成1.0/2或者1/2.0.。。。 谢谢!&&知道了 九楼正解。 9楼的已给你解决了。 Matlab默认计算精度,及C中有区别!你把其中的数字都在后面加.0再试试! 1/2改成1.0/2或者1/2.0试下
var cpro_id = 'u1216994';
欢迎监督和反馈:本帖内容由
提供,小木虫仅提供交流平台,不对该内容负责。欢迎协助我们监督管理,共同维护互联网健康,如果您对该内容有异议,请立即发邮件到
联系通知管理员,也可以通过QQ周知,我们的QQ号为:8835100
我们保证在1个工作日内给予处理和答复,谢谢您的监督。
小木虫,学术科研第一站,为中国学术科研研究提供免费动力
广告投放请联系QQ: &
违规贴举报删除请联系邮箱: 或者 QQ:8835100
Copyright &
eMuch.net, All Rights Reserved. 小木虫 版权所有}

我要回帖

更多关于 c语言输出 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信