精华内容
下载资源
问答
  • 东北大学在线编程社区problem1342 题目描述: 从键盘输入18位身份证号(字符数组),输出出生年月(整型)。...输入不是18位,则输出"input error" 输入样例:37050520000426205X 输出样例:2000-4 ...

    东北大学在线编程社区problem1342
    题目描述:
    从键盘输入18位身份证号(字符数组),输出出生年月(整型)。
    输出格式"%d-%d"
    输入不是18位,则输出"input error"

    输入样例:37050520000426205X
    输出样例:2000-4

    //该代码使用Microsoft Visual Stdio2019编写
    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <string.h>
    
    int main(void)
    {
    	char code[20];
    	int n, year, month;
    	gets(code);
    	n = strlen(code);
    	if (n == 18) {
    		year = (code[6] - 48) * 1000 + (code[7] - 48) * 100 + (code[8] - 48) * 10 + (code[9] - 48) * 1;
    		month = (code[10] - 48) * 10 + (code[11] - 48) * 1;
    		printf("%d-%d", year, month);
    	}
    	else
    		printf("input error");
    	return 0;
    }
    

    原题有使用二维数组的提示,但是作者怕麻烦就没有用。

    展开全文
  • c语言中实现对对象的管理 前面的代码是这样的 #include #include #include "ObjMgt.h" typedef struct key{ unsigned int key1; unsigned int key2; unsigned int key3; struct key * next; }keyall ; /*...
  • C语言中用于保存open函数执行错误代号的变量为errno(error number),每种打开错误都会返回一个错误代号,并且保存在error这个变量中。 如打开文件已存在,error的值为2。其指代的错误为EEXIST File exists (POSIX.1)...

    C语言中用于保存open函数执行错误代号的变量为errno(error number),每种打开错误都会返回一个错误代号,并且保存在error这个变量中。

    如打开文件已存在,error的值为2。其指代的错误为EEXIST          File exists (POSIX.1)

    如果想要将errno数值,以其对应的错误解析输出的话,程序需要调用strerror(errno)这个函数。此函数会直接返回errno的错误信息。

    将errno以及strerror两者公用之后的效果与perror相同。

    用errno可以用于分析所有open失败的情况。

    以下参考于http://blog.csdn.net/jediael_lu/article/details/8589194

       0:Success
       1:Operation not permitted
       2:No such file or directory
       3:No such process
       4:Interrupted system call
       5:Input/output error
       6:No such device or address
       7:Argument list too long
       8:Exec format error
       9:Bad file descriptor
      10:No child processes
      11:Resource temporarily unavailable
      12:Cannot allocate memory
      13:Permission denied
      14:Bad address
      15:Block device required
      16:Device or resource busy
      17:File exists
      18:Invalid cross-device link
      19:No such device
      20:Not a directory
      21:Is a directory
      22:Invalid argument
      23:Too many open files in system
      24:Too many open files
      25:Inappropriate ioctl for device
      26:Text file busy
      27:File too large
      28:No space left on device
      29:Illegal seek
      30:Read-only file system
      31:Too many links
      32:Broken pipe
      33:Numerical argument out of domain
      34:Numerical result out of range
      35:Resource deadlock avoided
      36:File name too long
      37:No locks available
      38:Function not implemented
      39:Directory not empty
      40:Too many levels of symbolic links
      41:Unknown error 41
      42:No message of desired type
      43:Identifier removed
      44:Channel number out of range
      45:Level 2 not synchronized
      46:Level 3 halted
      47:Level 3 reset
      48:Link number out of range
      49:Protocol driver not attached
      50:No CSI structure available
      51:Level 2 halted
      52:Invalid exchange
      53:Invalid request descriptor
      54:Exchange full
      55:No anode
      56:Invalid request code
      57:Invalid slot
      58:Unknown error 58
      59:Bad font file format
      60:Device not a stream
      61:No data available
      62:Timer expired
      63:Out of streams resources
      64:Machine is not on the network
      65:Package not installed
      66:Object is remote
      67:Link has been severed
      68:Advertise error
      69:Srmount error
      70:Communication error on send
      71:Protocol error
      72:Multihop attempted
      73:RFS specific error
      74:Bad message
      75:Value too large for defined data type
      76:Name not unique on network
      77:File descriptor in bad state
      78:Remote address changed
      79:Can not access a needed shared library
      80:Accessing a corrupted shared library
      81:.lib section in a.out corrupted
      82:Attempting to link in too many shared libraries
      83:Cannot exec a shared library directly
      84:Invalid or incomplete multibyte or wide character
      85:Interrupted system call should be restarted
      86:Streams pipe error
      87:Too many users
      88:Socket operation on non-socket
      89:Destination address required
      90:Message too long
      91:Protocol wrong type for socket
      92:Protocol not available
      93:Protocol not supported
      94:Socket type not supported
      95:Operation not supported
      96:Protocol family not supported
      97:Address family not supported by protocol
      98:Address already in use
      99:Cannot assign requested address
     100:Network is down
     101:Network is unreachable
     102:Network dropped connection on reset
     103:Software caused connection abort
     104:Connection reset by peer
     105:No buffer space available
     106:Transport endpoint is already connected
     107:Transport endpoint is not connected
     108:Cannot send after transport endpoint shutdown
     109:Too many references: cannot splice
     110:Connection timed out
     111:Connection refused
     112:Host is down
     113:No route to host
     114:Operation already in progress
     115:Operation now in progress
     116:Stale NFS file handle
     117:Structure needs cleaning
     118:Not a XENIX named type file
     119:No XENIX semaphores available
     120:Is a named type file
     121:Remote I/O error
     122:Disk quota exceeded
     123:No medium found
     124:Wrong medium type
     125:Operation canceled
     126:Required key not available

    printf("");


     127:Key has expired
     128:Key has been revoked
     129:Key was rejected by service
     130:Owner died
     131:State not recoverable
     132:Operation not possible due to RF-kill
     133:Unknown error 133
     134:Unknown error 134
     135:Unknown error 135
     136:Unknown error 136
     137:Unknown error 137
     138:Unknown error 138
     139:Unknown error 139

    ==================================2017/2/24添加==================================

    之前学会用errno这个方法之后,就经常把perror替换成printf("%s",strerror(errno));这样的形式,但是有时候要打很长代码的时候又发现很麻烦,又换了过来直接用perror输出,发现errno很累赘,貌似完全可以被perror函数替代。

    前几天遇到个问题,我在arm开发板上搭建了一个boa服务器,需要用到cgi编程

    在cgi编程的时候发现了一个问题,我的网站需要登陆才能访问,使用过cgi搭建boa网站的人应该知道所有的html标签都是c语言通过printf输出到浏览器,浏览器捕获到这些标记语言显示对应的内容,例如:

    printf("<p>Hello, world!</p>",);
    

    可以在网页中输出 "hello world!" 的字样。

    但是我要看到我的代码运行到什么位置的时候,就必须要用页面访问的方式,才可以,因为我在页面中加入了html中post获取,如果直接在arm板上运行的话,获取不到post数据就会出现错误没办法正常运行(后来发现这也只是因为post操作之后,没有判断获取的数据如果为NULL的操作才会出现的错误)。

    如果用perror输出的话,访问的时候也不会在页面中显示,因为perror是对标准输出文件的输出,但是浏览器并不是ARM开发板的标准输出,错误信息不会显示在浏览器中。

    后来我想起了errno。原来errno是用在这种场合

    printf('<script>alert("error information:%s")</script>',strerror(errno));

    只要这样的话,所有的错误都可以借用script 的alert方法将错误信息以弹框的方式显示出来。如果遇到了用不了调试器,又没办法简单的perror的话,用errno这种方式将数据转换成%s字符串输出,会方便很多!

    tips
    errno    头文件  errno.h
    strerror 头文件  string.h


    展开全文
  • //输出成绩 printf("点击空格键即可查看按成绩高低的排序"); if ((c=getch())==32) //同道理 { for(j=0;j;j++) //双循环语句的用途是:将结构体内的第N个成绩 { for(k=j+1;k;k++) { ...
  • C语言的标准输出需要转义字符 如果你想直接输出下面一行字符: (X_X)/ Says : “I can 100% print this !” 例如下面的代码: #include<stdio.h> int main() { printf("\(X_X)/ Says : "I can 100%% ...

    C语言的标准输出需要转义字符


    如果你想直接输出下面一行字符:

    (X_X)/ Says : “I can 100% print this !”


    例如下面的代码:

    #include<stdio.h>
     
    int main()
    {
        printf("\(X_X)/ Says : "I can 100%% print this !"");
        return 0;
    } 
    


    你会发现无法运行,提示错误:
    [Error] expected’)’ before ‘I’

    这时候我们就需要用到转义字符—\



    以下是几种常见的转义字符用法:


    转义字符 意义 ACSCII码值(10进制)
    \a 响铃(BEL) 007
    \b 退格(BS) 008
    \f 换页(FF) 012
    \n 换行(LF) 010
    \r 回车(CR) 013
    \t 水平制表(HT) 009
    \v 垂直制表(VT) 011
    \\ 一个反斜线字符’\’ 092
    \’ 一个单引号字符 039
    \" 一个双引号字符 034
    \0 空字符(NULL) 000



    另外,如果我们要输出%,对应代码应该是%%


    所以正确的代码应该是:

    #include<stdio.h>
     
    int main()
    {
        printf("\\(X_X)/ Says : \"I can 100%% print this !\"");
        return 0;
    } 
    



    这样问题就解决啦!!!

    展开全文
  • 同学们在第一节C语言课上,老师还没要求我们从键盘输入数据,只是单纯的声明变量,用一些基本运算符输出结果。而在C语言中,有着输出,必然有着输入,就像英语中有 you,那么肯定也有 I.在用这个函数的时候同学们...

    接着上次的输出函数,这次我们来细细的讲一下输入函数:

    scnaf();

    同学们在第一节C语言课上,老师还没要求我们从键盘输入数据,只是单纯的声明变量,用一些基本运算符输出结果。而在C语言中,有着输出,必然有着输入,就像英语中有 you,那么肯定也有 I.

    在用这个函数的时候同学们常常会出一些小毛病,而这些毛病,对于刚刚进入编程大门的同学来说,是很难发现的。

    这里我稍微详细的介绍下这个与输出对应的函数,输入。

    写一个简单的输入函数的格式:

    scanf(" 格式化字符串 ", 地址列表);

    有观察到这里与printf函数极其相似嘛,双引号,逗号,分号。

    格式化字符串与printf函数一样,也是由 % + x 构成:

    %d %c %s %e %u

    与printf不同的是,这里逗号右边是地址列表,同学们在写代码的时候,有没有好奇为啥要用到 & 这个符号?

    这个符号在C语言中,在这个函数里面叫做 “取地址符”。

    同学们记得第一节课老师讲的关于计算机中地址的概念嘛?

    在我们声明变量的时候,编译器就会帮助我们为这个变量开辟一定大小的地址空间,用来存放数据,例如:

    int num1, num2; //开辟两个大小为4个字节的整形变量

    double num3, num4; //开辟了两个大小为8个字节的双精度变量

    这里的地址是一个标识,让我们知道这个数据存放的位置。相当于你点外卖的时候,告诉商家你的地址是在XXXXX学校XX宿舍501号 这样的。外卖相当于是数据,当外卖小哥把外卖送你宿舍的时候,也就相当于把数据存进了地址。

    这里的 & 作用就是告诉scanf函数这个我输入的数据是要存进这个地址的,也可以说是写进这个地址。

    知道了这些之后,我们再来看下这个函数怎么用:

    比如我想求两个整形变量相加减,那么首先我肯定是要先有这两个整形变量存在,不存在我数据放哪去?外卖小哥的外卖送去哪?

    所以

    int n1, n2; //声明两个整形变量

    接下来输入,往这两个变量里面写入数据,这时候,我们的scanf函数就派上用场啦:

    scanf("%d %d", &a, &b);

    这里要解释一点 : 在格式控制字符串里面,一般都不需要添加任何字符的,有些同学喜欢在里面加上逗号:

    scnaf("%d,%d", &a, &b);

    这就导致你在输入数据的时候,也要把逗号输入进去。

    可是这是为什么呢?

    因为,在我们把数据从键盘敲进显示屏的时候,这些数据会以ASCII码的形式存在 ”缓冲区", 例如我输入12 74. 那么此时存在缓冲区的数据就是3132 3734 (ASCII码),然后scanf会从缓冲区扫描过去,从缓冲区读走一个字符,相当于清空缓冲区,直到结束。

    也许会有同学有疑问,这个中间有空格咋办?

    这个不用担心,scanf会自动忽略这样的空白字符,如大段空格,tab,回车。

    也许还会问这个读走的是ASCII码呀,可是我要的是十进制的啊?

    这个也不用担心,scanf会帮我们转换成对应的的数据类型。

    然后我们在回头看一下,为啥要输入逗号呢?因为在输入数据的时候,若是没有空格,scanf在扫描数据的时候,本来要写入变量b地址的数据,写进了逗号,故变量b也就没写入数据。

    用运行结果来看:

    51be5963be0bd5fd97dccb2c821570fc.png

    变量b的值还是系统随机分配的垃圾值(此值为上一个程序用过该地址后,未清空留下的值。比如有个程序利用了这块地址,假设地址为0x93fb78, 里面的数据为 -1234567. 用完之后里面的值没有清空,那么在我这个代码中,变量b恰好分配到了这个地址,而我还未对该变量进行赋值操作,由系统分配,那么该值就是上一次遗留的数据,也就是-1234567)。

    若我b 赋初始值为 0 呢?

    ae75c2a7c0b99e39d55b0fe1a6b56dd1.png

    这就很直观的反映了我输入的数据74 并没有写入进b的地址,造成了数据丢失。

    所以,在我们不是特别要求的情况下,最好还是不要在scanf函数里面加东西,直接写成:

    scanf("%d %d",&n1, &n2);

    scanf("%d%d",&n1, &n2); //%d%d之间可以空格,也可以不用空格隔开

    上面的对scanf忽略空白符的描述也可以作为理解输入数据的时候,为什么可以用回车隔开,也可以空格很多次,而不影响数据的写入的理论基础。

    如果说printf是拼图的时候一块块拼图,那么scanf函数就是拼图的建造者(数据写入)

    它告诉printf函数这块拼图该往哪儿拼(数据输出)

    这里我要对 取地址 & 讲下我在学习C语言时候的理解:

    取地址,我把地址理解为计算机中一个个小盒子,这个盒子叫做地址,

    取地址的时候就是把这个盒子给拿出来,scanf函数从键盘获取数据的时候,

    把数据放进这个小盒子,在把盒子放到它原来的位置。

    不同的数据类型对应着不同大小的盒子,double最大,int相对较小,而且double这个盒子能装水(浮点,浮这个词我想像成水 这样去看待的话是不是很好理解呢?

    scnaf函数作为数据的写入,有一个缺陷,在写入字符数组数据的时候,只会读取第一个空格前的字符数据:

    0dab73542abd2a6b571359bc17c532d4.png

    同学们看到空格是不是联想到了前面的 scanf会忽略空白符 呢?它在读取到第一个空格的时候就误认为数据已经完毕了,所以把空格前的 Today 写进了字符变量 str 在的地址。

    后面的数据就存在了缓冲区。这也是scanf函数的一个缺陷。

    ps: 在用scanf函数对字符串进行操作的时候,不需要取地址符, 因为数组名就是这个变量的首地址。

    为了解决这个缺陷,我们需要用到gets()函数来输入字符串数据:

    7b14ae98e2223d1fdc9d9cbeef914760.png

    关于scanf函数的问题就先讲到这里了,最后再次总结下关于scanf函数涉及到的几个方面:

    0:取地址符

    1:scanf会忽略空白符

    2:输入数据的时候,格式要跟 ”格式控制字符串“ 一样。有逗号输入逗号,无逗号用空白符隔开数据即可。

    3:数据在缓冲区,scanf读取数据,转换成我们需要的,清空缓冲区。

    (如有错误欢迎指出)

    展开全文
  • C语言实现输出星号组成的三角形

    万次阅读 2018-12-14 10:44:45
    输入边长为1-80中的奇数如输入错误边长,输出error。 代码 #include &amp;lt;stdio.h&amp;gt; void xing(int a,int b)//a为*数量,b为行长度 { int i; for(i=1;i&amp;lt;=((b-a)/2);i++) ...
  • 但提交到acm网站上以后却显示Compilation error,我想知道是哪里出了问题,我应该如何修改方可通过? <p><strong>1.代码如下:</strong></p>   <code>#include <stdio.h> ...
  • C语言输出由星号组成的三角形

    千次阅读 2019-11-26 15:20:41
    输入边长(1-80中的奇数),错误边长,输出error。 例如, 输入1,输出回车 输入2,输出error 输入3,输出 * ***回车 这道题的思路是你需要想想第一步该做什么,然后下一步该做什么,你要先判断有多少行,每行要打多少...
  • 输入8个10进制整数,依次输出每一个数的八进制和十六进制表示。 输入 共有8行,每行包含一个整数。 输出 对于每一行输入,输出一行,包含相应数的八进制和十六进制表示,用空格隔开。 样例输入 10 32 75 -617...
  • C语言输出的结果写入*.txt文件(笔记) void OutputData(const char *pFileName)//这是要保存的名字和地址 { FILE * pFile; pFile = fopen(pFileName, "w");//这个用“w”是写文件,覆盖原内容,若不想覆盖则用...
  • C语言输出函数任意参数的实现

    千次阅读 2010-07-05 21:04:00
    C语言输出函数任意参数的实现: #include <stdarg.h><br />  int MyError(char *pFormate,...) {  va_list ap;  va_start(ap,pFormate);  fprintf(stderr, "error:");...
  • 一、C语言的main函数 常见形式: int main() { … return 0; } 实际上main函数应该为: int main(int argv, char* argv[]) { … return 0; } 二、标准I/O流和error流 前者由后者封装而成 printf(): fprintf(stdin,"...
  • 输出:A,B使得Ax+By!=0,且Ax+By>0的数目与Ax+By的数目相同(-500,B) 如: Sample Input 2 -20 20 -30 20 -10 -50 10 -5 0 Sample Output 0 1 我的代码: #include #define MAXN ...
  • 10000)) { error("输入编号不符合要求"); fflush(stdin); continue; } printf("请输入小于500的图书数量:\n"); scanf("%d", &count); getchar(); if(!(count > 0 &&...
  • C语言随笔_printf输出多行

    千次阅读 2019-09-15 01:08:10
    想在printf中,输出多行数据,如果写成下面这样: printf("line 1\n line 2\n line 3\n"); 编译器会报错“error C2001: newline in constant”。 可以这样写: printf("line 1\ line 2\ line 3\n...
  • #error token-sequence 其主要的作用是在编译的时候输出编译错误信息token-sequence,从方便程序员检查程序中出现的错误。 该指令用于程序的调试, 当编译中遇到#error指令就停止编译。 #define ...
  • Error\n");  else  {<!-- --> for(i=a;i<=b;i++)  {<!-- --> if(i%2==0) {<!-- --> n4=i/1000; n3=(i%1000)/100;...
  • 22.c语言各种输入输出与错误处理

    千次阅读 2017-09-02 20:06:28
    1.errno 2.strerror(errno) 3.perror() 向标准错误输出信息:#include <stdio.h>int main () { FILE *fp; fp = fopen("file.txt", "r"); if( fp == NULL ) { perror("Error: "); return(-1); } fc
  • C语言编程时printf如何输出多行

    千次阅读 2017-01-06 16:46:00
    版权声明:本文为作者原创...想在printf中,输出多行数据,如果写成下面这样:printf("line 1\nline 2\nline 3\n");编译器会报错“error C2001: newline in constant”。可以这样写:printf("line 1\line 2\line 3\...
  • 在企业中和单片机底层开发中,很多时候我们不会直接使用printf直接输出调试信息,在一般的企业中C语言开发调试输出中一般都会定义调试输出等级,公司越高级对于调试信息的等级划分越清晰,下面是调试部分代码的实现...
  • 我们在调试c语言时,通常用printf函数输出调试信息,而printf函数默认是输出到缓冲区,等到缓冲区满了以后才输出,或者等到输出换行符后才输出。特别是在qt里边,printf函数的输出即使包含换行也需要等到缓冲区满了...
  • 输出的文件第一行末尾也没有回车,这种情况该如何解决,求大神解惑 代码如下 <p>#include <stdio.h> #include <stdlib.h> #include <string.h> #define LINE 100...
  • #include #include #include #include #include #include #include typedef struct{  int i;  int lock;...void error_and_die(const char *msg) {  perror(msg);  exit(EXIT_FAIL
  • 代码写的链表实现创建,插入,删除的操作,很基础的一些动作。 可以本地用NotePad写好代码,然后通过Filezilla上传到服务器上去。 通过Xshell进入目录,gcc test.c -...#define ERROR -1; #define TRUE 1; typedef str

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 519
精华内容 207
关键字:

c语言输出error

c语言 订阅