linux字符rwrr,linux c函数参考-进程操作篇

ATEXIT(设置程序正常结束前调用的函数)相关函数_EXIT,EXIT,ON_EXIT表头文件INCLUDE定义函数INTATEXITVOIDFUNCTIONVOID函数说明ATEXIT用来设置一个程序正常结束前调用的函数。当程序通过调用EXIT或从MAIN中返回时,参数FUNCTION所指定的函数会先被调用,然后才真正由EXIT结束程序。返回值如果执行成功则返回0,否则返回1,失败原因存于ERRNO中。范例INCLUDEVOIDMY_EXITVOID{PRINTF“BEFOREEXIT\N”}MAIN{ATEXITMY_EXITEXIT0}执行BEFOREEXITEXECL(执行文件)相关函数FORK,EXECLE,EXECLP,EXECV,EXECVE,EXECVP表头文件INCLUDE定义函数INTEXECLCONSTCHARPATH,CONSTCHARARG,函数说明EXECL用来执行参数PATH字符串所代表的文件路径,接下来的参数代表执行该文件时传递过去的ARGV0、ARGV1,最后一个参数必须用空指针NULL作结束。返回值如果执行成功则函数不会返回,执行失败则直接返回1,失败原因存于ERRNO中。范例INCLUDEMAIN{EXECL“/BIN/LS”,”LS”,”AL”,”/ETC/PASSWD”,CHAR0}执行/执行/BIN/LSAL/ETC/PASSWD/页码,1/20UNTITLEDDOCUMENT200419FILE//D\LINUX_C\FUNCTION\11HTMLRWRR1ROOTROOT705SEP31352/ETC/PASSWDEXECLP(从PATH环境变量中查找文件并执行)相关函数FORK,EXECL,EXECLE,EXECV,EXECVE,EXECVP表头文件INCLUDE定义函数INTEXECLPCONSTCHARFILE,CONSTCHARARG,;函数说明EXECLP会从PATH环境变量所指的目录中查找符合参数FILE的文件名,找到后便执行该文件,然后将第二个以后的参数当做该文件的ARGV0、ARGV1,最后一个参数必须用空指针NULL作结束。返回值如果执行成功则函数不会返回,执行失败则直接返回1,失败原因存于ERRNO中。错误代码参考EXECVE。范例/执行LSAL/ETC/PASSWDEXECLP会依PATH变量中的/BIN找到/BIN/LS/INCLUDEMAIN{EXECLP“LS”,”LS”,”AL”,”/ETC/PASSWD”,CHAR0}执行RWRR1ROOTROOT705SEP31352/ETC/PASSWDEXECV(执行文件)相关函数FORK,EXECL,EXECLE,EXECLP,EXECVE,EXECVP表头文件INCLUDE定义函数INTEXECVCONSTCHARPATH,CHARCONSTARGV函数说明EXECV用来执行参数PATH字符串所代表的文件路径,与EXECL不同的地方在于EXECVE只需两个参数,第二个参数利用数组指针来传递给执行文件。返回值如果执行成功则函数不会返回,执行失败则直接返回1,失败原因存于ERRNO中。错误代码请参考EXECVE()。范例/执行/BIN/LSAL/ETC/PASSWD/INCLUDEMAIN{CHARARGV{“LS”,”AL”,”/ETC/PASSWD”,CHAR}}页码,2/20UNTITLEDDOCUMENT200419FILE//D\LINUX_C\FUNCTION\11HTMLEXECV“/BIN/LS”,ARGV}执行RWRR1ROOTROOT705SEP31352/ETC/PASSWDEXECVE(执行文件)相关函数FORK,EXECL,EXECLE,EXECLP,EXECV,EXECVP表头文件INCLUDE定义函数INTEXECVECONSTCHARFILENAME,CHARCONSTARGV,CHARCONSTENVP函数说明EXECVE用来执行参数FILENAME字符串所代表的文件路径,第二个参数系利用数组指针来传递给执行文件,最后一个参数则为传递给执行文件的新环境变量数组。返回值如果执行成功则函数不会返回,执行失败则直接返回1,失败原因存于ERRNO中。错误代码EACCES1欲执行的文件不具有用户可执行的权限。2欲执行的文件所属的文件系统是以NOEXEC方式挂上。3欲执行的文件或SCRIPT翻译器非一般文件。EPERM1进程处于被追踪模式,执行者并不具有ROOT权限,欲执行的文件具有SUID或SGID位。2欲执行的文件所属的文件系统是以NOSUID方式挂上,欲执行的文件具有SUID或SGID位元,但执行者并不具有ROOT权限。E2BIG参数数组过大ENOEXEC无法判断欲执行文件的执行文件格式,有可能是格式错误或无法在此平台执行。EFAULT参数FILENAME所指的字符串地址超出可存取空间范围。ENAMETOOLONG参数FILENAME所指的字符串太长。ENOENT参数FILENAME字符串所指定的文件不存在。ENOMEM核心内存不足ENOTDIR参数FILENAME字符串所包含的目录路径并非有效目录EACCES参数FILENAME字符串所包含的目录路径无法存取,权限不足ELOOP过多的符号连接ETXTBUSY欲执行的文件已被其他进程打开而且正把数据写入该文件中EIOI/O存取错误ENFILE已达到系统所允许的打开文件总数。EMFILE已达到系统所允许单一进程所能打开的文件总数。EINVAL欲执行文件的ELF执行格式不只一个PT_INTERP节区EISDIRELF翻译器为一目录ELIBBADELF翻译器有问题。页码,3/20UNTITLEDDOCUMENT200419FILE//D\LINUX_C\FUNCTION\11HTML范例INCLUDEMAIN{CHARARGV{“LS”,”AL”,”/ETC/PASSWD”,CHAR0}CHARENVP{“PATH/BIN”,0}EXECVE“/BIN/LS”,ARGV,ENVP}执行RWRR1ROOTROOT705SEP31352/ETC/PASSWDEXECVP(执行文件)相关函数FORK,EXECL,EXECLE,EXECLP,EXECV,EXECVE表头文件INCLUDE定义函数INTEXECVPCONSTCHARFILE,CHARCONSTARGV函数说明EXECVP会从PATH环境变量所指的目录中查找符合参数FILE的文件名,找到后便执行该文件,然后将第二个参数ARGV传给该欲执行的文件。返回值如果执行成功则函数不会返回,执行失败则直接返回1,失败原因存于ERRNO中。错误代码请参考EXECVE()。范例/请与EXECLP()范例对照/INCLUDEMAIN{CHARARGV{“LS”,”AL”,”/ETC/PASSWD”,0}EXECVP“LS”,ARGV}执行RWRR1ROOTROOT705SEP31352/ETC/PASSWDEXIT(正常结束进程)相关函数_EXIT,ATEXIT,ON_EXIT表头文件INCLUDE定义函数VOIDEXITINTSTATUS函数说明EXIT用来正常终结目前进程的执行,并把参数STATUS返回给父进程,而进程所有的缓冲区数据会自动写回并关闭未关闭的文件。返回值范例参考WAIT()页码,4/20UNTITLEDDOCUMENT200419FILE//D\LINUX_C\FUNCTION\11HTML_EXIT(结束进程执行)相关函数EXIT,WAIT,ABORT表头文件INCLUDE定义函数VOID_EXITINTSTATUS函数说明_EXIT用来立刻结束目前进程的执行,并把参数STATUS返回给父进程,并关闭未关闭的文件。此函数调用后不会返回,并且会传递SIGCHLD信号给父进程,父进程可以由WAIT函数取得子进程结束状态。返回值附加说明_EXIT()不会处理标准I/O缓冲区,如要更新缓冲区请使用EXIT()。VFORK(建立一个新的进程)相关函数WAIT,EXECVE表头文件INCLUDE定义函数PID_TVFORKVOID函数说明VFORK会产生一个新的子进程,其子进程会复制父进程的数据与堆栈空间,并继承父进程的用户代码,组代码,环境变量、已打开的文件代码、工作目录和资源限制等。LINUX使用COPYONWRITECOW技术,只有当其中一进程试图修改欲复制的空间时才会做真正的复制动作,由于这些继承的信息是复制而来,并非指相同的内存空间,因此子进程对这些变量的修改和父进程并不会同步。此外,子进程不会继承父进程的文件锁定和未处理的信号。注意,LINUX不保证子进程会比父进程先执行或晚执行,因此编写程序时要留意死锁或竞争条件的发生。返回值如果VFORK成功则在父进程会返回新建立的子进程代码PID,而在新建立的子进程中则返回0。如果VFORK失败则直接返回1,失败原因存于ERRNO中。错误代码EAGAIN内存不足。ENOMEM内存不足,无法配置核心所需的数据结构空间。范例INCLUDEMAIN{IFVFORK0{PRINTF“THISISTHECHILDPROCESS\N”页码,5/20UNTITLEDDOCUMENT200419FILE//D\LINUX_C\FUNCTION\11HTML}ELSE{PRINTF“THISISTHEPARENTPROCESS\N”}}执行THISISTHEPARENTPROCESSTHISISTHECHILDPROCESSGETPGID(取得进程组识别码)相关函数SETPGID,SETPGRP,GETPGRP表头文件INCLUDE定义函数PID_TGETPGIDPID_TPID函数说明GETPGID用来取得参数PID指定进程所属的组识别码。如果参数PID为0,则会取得目前进程的组识别码。返回值执行成功则返回组识别码,如果有错误则返回1,错误原因存于ERRNO中。错误代码ESRCH找不到符合参数PID指定的进程。范例/取得INIT进程(PID=1)的组识别码/INCLUDEMIAN{PRINTF“INITGIDD\N”,GETPGID1}执行INITGID0GETPGRP(取得进程组识别码)相关函数SETPGID,GETPGID,GETPGRP表头文件INCLUDE定义函数PID_TGETPGRPVOID函数说明GETPGRP用来取得目前进程所属的组识别码。此函数相当于调用GETPGID0;返回值返回目前进程所属的组识别码。范例INCLUDEMAIN{PRINTF“MYGIDD\N”,GETPGRP}执行MYGID29546页码,6/20UNTITLEDDOCUMENT200419FILE//D\LINUX_C\FUNCTION\11HTMLGETPID(取得进程识别码)相关函数FORK,KILL,GETPID表头文件INCLUDE定义函数PID_TGETPIDVOID函数说明GETPID()用来取得目前进程的进程识别码,许多程序利用取到的此值来建立临时文件,以避免临时文件相同带来的问题。返回值目前进程的进程识别码范例INCLUDEMAIN{PRINTF“PIDD\N”,GETPID}执行PID1494/每次执行结果都不一定相同/GETPPID(取得父进程的进程识别码)相关函数FORK,KILL,GETPID表头文件INCLUDE定义函数PID_TGETPPIDVOID函数说明GETPPID用来取得目前进程的父进程识别码。返回值目前进程的父进程识别码。范例INCLUDEMAIN{PRINTF“MYPARENT‘PIDD\N”,GETPPID}执行MYPARENTPID463GETPRIORITY(取得程序进程执行优先权)相关函数SETPRIORITY,NICE表头文件INCLUDEINCLUDE定义函数INTGETPRIORITYINTWHICH,INTWHO函数说明GETPRIORITY可用来取得进程、进程组和用户的进程执行优先权。页码,7/20UNTITLEDDOCUMENT200419FILE//D\LINUX_C\FUNCTION\11HTML参数WHICH有三种数值,参数WHO则依WHICH值有不同定义WHICHWHO代表的意义PRIO_PROCESSWHO为进程识别码PRIO_PGRPWHO为进程的组识别码PRIO_USERWHO为用户识别码此函数返回的数值介于20至20之间,代表进程执行优先权,数值越低代表有较高的优先次序,执行会较频繁。返回值返回进程执行优先权,如有错误发生返回值则为1且错误原因存于ERRNO。附加说明由于返回值有可能是1,因此要同时检查ERRNO是否存有错误原因。最好在调用次函数前先清除ERRNO变量。错误代码ESRCH参数WHICH或WHO可能有错,而找不到符合的进程。EINVAL参数WHICH值错误。NICE(改变进程优先顺序)相关函数SETPRIORITY,GETPRIORITY表头文件INCLUDE定义函数INTNICEINTINC函数说明NICE用来改变进程的进程执行优先顺序。参数INC数值越大则优先顺序排在越后面,即表示进程执行会越慢。只有超级用户才能使用负的INC值,代表优先顺序排在前面,进程执行会较快。返回值如果执行成功则返回0,否则返回1,失败原因存于ERRNO中。错误代码EPERM一般用户企图转用负的参数INC值改变进程优先顺序。ON_EXIT(设置程序正常结束前调用的函数)相关函数_EXIT,ATEXIT,EXIT表头文件INCLUDE定义函数INTON_EXITVOIDFUNCTIONINT,VOID,VOIDARG函数说明ON_EXIT用来设置一个程序正常结束前调用的函数。当程序通过调用EXIT或从MAIN中返回时,参数FUNCTION所指定的函数会先被调用,然后才真正由EXIT结束程序。参数ARG指针会传给参数FUNCTION函数,详细情况请见范例。返回值如果执行成功则返回0,否则返回1,失败原因存于ERRNO中。附加说明范例INCLUDEVOIDMY_EXITINTSTATUS,VOIDARG{页码,8/20UNTITLEDDOCUMENT200419FILE//D\LINUX_C\FUNCTION\11HTMLPRINTF“BEFOREEXIT\N”PRINTF“EXITD\N”,STATUSPRINTF“ARGS\N”,CHARARG}MAIN{CHARSTR”TEST”ON_EXITMY_EXIT,VOIDSTREXIT1234}执行BEFOREEXITEXIT1234ARGTESTSETPGID(设置进程组识别码)相关函数GETPGID,SETPGRP,GETPGRP表头文件INCLUDE定义函数INTSETPGIDPID_TPID,PID_TPGID函数说明SETPGID将参数PID指定进程所属的组识别码设为参数PGID指定的组识别码。如果参数PID为0,则会用来设置目前进程的组识别码,如果参数PGID为0,则会以目前进程的进程识别码来取代。返回值执行成功则返回组识别码,如果有错误则返回1,错误原因存于ERRNO中。错误代码EINVAL参数PGID小于0。EPERM进程权限不足,无法完成调用。ESRCH找不到符合参数PID指定的进程。SETPGRP(设置进程组识别码)相关函数GETPGID,SETPGID,GETPGRP表头文件INCLUDE定义函数INTSETPGRPVOID函数说明SETPGRP将目前进程所属的组识别码设为目前进程的进程识别码。此函数相当于调用SETPGID0,0。返回值执行成功则返回组识别码,如果有错误则返回1,错误原因存于ERRNO中。页码,9/20UNTITLEDDOCUMENT200419FILE//D\LINUX_C\FUNCTION\11HTMLSETPRIORITY(设置程序进程执行优先权)相关函数GETPRIORITY,NICE表头文件INCLUDEINCLUDE定义函数INTSETPRIORITYINTWHICH,INTWHO,INTPRIO函数说明SETPRIORITY可用来设置进程、进程组和用户的进程执行优先权。参数WHICH有三种数值,参数WHO则依WHICH值有不同定义WHICHWHO代表的意义PRIO_PROCESSWHO为进程识别码PRIO_PGRPWHO为进程的组识别码PRIO_USERWHO为用户识别码参数PRIO介于20至20之间。代表进程执行优先权,数值越低代表有较高的优先次序,执行会较频繁。此优先权默认是0,而只有超级用户(ROOT)允许降低此值。返回值执行成功则返回0,如果有错误发生返回值则为1,错误原因存于ERRNO。ESRCH参数WHICH或WHO可能有错,而找不到符合的进程EINVAL参数WHICH值错误。EPERM权限不够,无法完成设置EACCES一般用户无法降低优先权SYSTEM(执行SHELL命令)相关函数FORK,EXECVE,WAITPID,POPEN表头文件INCLUDE定义函数INTSYSTEMCONSTCHARSTRING函数说明SYSTEM会调用FORK产生子进程,由子进程来调用/BIN/SHCSTRING来执行参数STRING字符串所代表的命令,此命令执行完后随即返回原调用的进程。在调用SYSTEM期间SIGCHLD信号会被暂时搁置,SIGINT和SIGQUIT信号则会被忽略。返回值如果SYSTEM在调用/BIN/SH时失败则返回127,其他失败原因返回1。若参数STRING为空指针NULL,则返回非零值。如果SYSTEM调用成功则最后会返回执行SHELL命令后的返回值,但是此返回值也有可能为SYSTEM调用/BIN/SH失败所返回的127,因此最好能再检查ERRNO来确认执行成功。附加说明在编写具有SUID/SGID权限的程序时请勿使用SYSTEM,SYSTEM会继承环境变量,通过环境变量可能会造成系统安全的问题。范例INCLUDEMAIN{页码,10/20UNTITLEDDOCUMENT200419FILE//D\LINUX_C\FUNCTION\11HTMLSYSTEM“LSAL/ETC/PASSWD/ETC/SHADOW”}执行RWRR1ROOTROOT705SEP31352/ETC/PASSWDR1ROOTROOT572SEP21534/ETC/SHADOWWAIT(等待子进程中断或结束)相关函数WAITPID,FORK表头文件INCLUDEINCLUDE定义函数PID_TWAITINTSTATUS函数说明WAIT会暂时停止目前进程的执行,直到有信号来到或子进程结束。如果在调用WAIT时子进程已经结束,则WAIT会立即返回子进程结束状态值。子进程的结束状态值会由参数STATUS返回,而子进程的进程识别码也会一快返回。如果不在意结束状态值,则参数STATUS可以设成NULL。子进程的结束状态值请参考WAITPID。返回值如果执行成功则返回子进程识别码PID,如果有错误发生则返回1。失败原因存于ERRNO中。附加说明范例INCLUDEINCLUDEINCLUDEINCLUDEMAIN{PID_TPIDINTSTATUS,IIFFORK0{PRINTF“THISISTHECHILDPROCESSPIDD\N”,GETPIDEXIT5}ELSE{SLEEP1PRINTF“THISISTHEPARENTPROCESS,WAITFORCHILD\N”PIDWAITIWEXITSTATUSSTATUSPRINTF“CHILD’SPIDDEXITSTATUSD\N”,PID,I}}执行THISISTHECHILDPROCESSPID1501THISISTHEPARENTPROCESSWAITFORCHILDCHILD’SPID1501,EXITSTATUS5页码,11/20UNTITLEDDOCUMENT200419FILE//D\LINUX_C\FUNCTION\11HTMLWAITPID(等待子进程中断或结束)相关函数WAIT,FORK表头文件INCLUDEINCLUDE定义函数PID_TWAITPIDPID_TPID,INTSTATUS,INTOPTIONS函数说明WAITPID会暂时停止目前进程的执行,直到有信号来到或子进程结束。如果在调用WAIT时子进程已经结束,则WAIT会立即返回子进程结束状态值。子进程的结束状态值会由参数STATUS返回,而子进程的进程识别码也会一快返回。如果不在意结束状态值,则参数STATUS可以设成NULL。参数PID为欲等待的子进程识别码,其他数值意义如下PID0等待任何子进程识别码为PID的子进程。参数OPTION可以为0或下面的OR组合WNOHANG如果没有任何已经结束的子进程则马上返回,不予以等待。WUNTRACED如果子进程进入暂停执行情况则马上返回,但结束状态不予以理会。子进程的结束状态返回后存于STATUS,底下有几个宏可判别结束情况WIFEXITEDSTATUS如果子进程正常结束则为非0值。WEXITSTATUSSTATUS取得子进程EXIT返回的结束代码,一般会先用WIFEXITED来判断是否正常结束才能使用此宏。WIFSIGNALEDSTATUS如果子进程是因为信号而结束则此宏值为真WTERMSIGSTATUS取得子进程因信号而中止的信号代码,一般会先用WIFSIGNALED来判断后才使用此宏。WIFSTOPPEDSTATUS如果子进程处于暂停执行情况则此宏值为真。一般只有使用WUNTRACED时才会有此情况。WSTOPSIGSTATUS取得引发子进程暂停的信号代码,一般会先用WIFSTOPPED来判断后才使用此宏。返回值如果执行成功则返回子进程识别码PID,如果有错误发生则返回1。失败原因存于ERRNO中。范例参考WAIT。FPRINTF(格式化输出数据至文件)相关函数PRINTF,FSCANF,VFPRINTF页码,12/20UNTITLEDDOCUMENT200419FILE//D\LINUX_C\FUNCTION\11HTML表头文件INCLUDE定义函数INTFPRINTFFILESTREAM,CONSTCHARFORMAT,函数说明FPRINTF会根据参数FORMAT字符串来转换并格式化数据,然后将结果输出到参数STREAM指定的文件中,直到出现字符串结束'\0'为止。返回值关于参数FORMAT字符串的格式请参考PRINTF。成功则返回实际输出的字符数,失败则返回1,错误原因存于ERRNO中。范例INCLUDEMAIN{INTI150INTJ100DOUBLEK314159FPRINTFSTDOUT,”DFX\N”,J,K,IFPRINTFSTDOUT,”2DD\N”,I,2,I}执行100314159096150150FSCANF(格式化字符串输入)相关函数SCANF,SSCANF表头文件INCLUDE定义函数INTFSCANFFILESTREAM,CONSTCHARFORMAT,函数说明FSCANF会自参数STREAM的文件流中读取字符串,再根据参数FORMAT字符串来转换并格式化数据。格式转换形式请参考SCANF。转换后的结构存于对应的参数内。返回值成功则返回参数数目,失败则返回1,错误原因存于ERRNO中。附加说明范例INCLUDEMAIN{INTIUNSIGNEDINTJCHARS5FSCANFSTDIN,”DX5AZSF”,PRINTF“DDS\N”,I,J,S}执行100X1BAAAAAAAAABBBBBBBBBB/从键盘输入/1027AAAAA页码,13/20UNTITLEDDOCUMENT200419FILE//D\LINUX_C\FUNCTION\11HTMLPRINTF(格式化输出数据)相关函数SCANF,SNPRINTF表头文件INCLUDE定义函数INTPRINTFCONSTCHARFORMAT,函数说明PRINTF会根据参数FORMAT字符串来转换并格式化数据,然后将结果写出到标准输出设备,直到出现字符串结束'\0'为止。参数FORMAT字符串可包含下列三种字符类型1一般文本,伴随直接输出。2ASCII控制字符,如\T、\N等。3格式转换字符。格式转换为一个百分比符号%及其后的格式字符所组成。一般而言,每个%符号在其后都必需有一PRINTF的参数与之相呼应(只有当%%转换字符出现时会直接输出%字符),而欲输出的数据类型必须与其相对应的转换字符类型相同。PRINTF格式转换的一般形式如下%FLAGSWIDTHPRECTYPE以中括号括起来的参数为选择性参数,而%与TYPE则是必要的。底下先介绍TYPE的几种形式整数%D整数的参数会被转成一有符号的十进制数字%U整数的参数会被转成一无符号的十进制数字%O整数的参数会被转成一无符号的八进制数字%X整数的参数会被转成一无符号的十六进制数字,并以小写ABCDEF表示%X整数的参数会被转成一无符号的十六进制数字,并以大写ABCDEF表示浮点型数%FDOUBLE型的参数会被转成十进制数字,并取到小数点以下六位,四舍五入。%EDOUBLE型的参数以指数形式打印,有一个数字会在小数点前,六位数字在小数点后,而在指数部分会以小写的E来表示。%E与%E作用相同,唯一区别是指数部分将以大写的E来表示。%GDOUBLE型的参数会自动选择以%F或%E的格式来打印,其标准是根据欲打印的数值及所设置的有效位数来决定。%G与%G作用相同,唯一区别在以指数形态打印时会选择%E格式。字符及字符串%C整型数的参数会被转成UNSIGNEDCHAR型打印出。%S指向字符串的参数会被逐字输出,直到出现NULL字符为止%P如果是参数是“VOID”型指针则使用十六进制格式显示。PREC有几种情况1正整数的最小位数。2在浮点型数中代表小数位数页码,14/20UNTITLEDDOCUMENT200419FILE//D\LINUX_C\FUNCTION\11HTML3在%G格式代表有效位数的最大值。4在%S格式代表字符串的最大长度。5若为符号则代表下个参数值为最大长度。WIDTH为参数的最小长度,若此栏并非数值,而是符号,则表示以下一个参数当做参数长度。FLAGS有下列几种情况NAME一般在打印负数时,PRINTF()会加印一个负号,整数则不加任何负号。此旗标会使得在打印正数前多一个正号()。此旗标会根据其后转换字符的不同而有不同含义。当在类型为O之前(如%O),则会在打印八进制数值前多印一个O。而在类型为X之前(%X)则会在打印十六进制数前多印’0X’,在型态为E、E、F、G或G之前则会强迫数值打印小数点。在类型为G或G之前时则同时保留小数点及小数位数末尾的零。0当有指定参数时,无数字的参数将补上0。默认是关闭此旗标,所以一般会打印出空白字符。返回值成功则返回实际输出的字符数,失败则返回1,错误原因存于ERRNO中。范例INCLUDEMAIN{INTI150INTJ100DOUBLEK314159PRINTF“DFX\N”,J,K,IPRINTF“2DD\N”,I,2,I/参数2会代入格式中,而与2D同意义/}执行10031415996150150SACNF(格式化字符串输入)相关函数FSCANF,SNPRINTF表头文件INCLUDE定义函数INTSCANFCONSTCHARFORMAT,函数说明SCANF会将输入的数据根据参数FORMAT字符串来转换并格式化数据。SCANF格式转换的一般形式如下%SIZELHTYPE以中括号括起来的参数为选择性参数,而%与TYPE则是必要的。代表该对应的参数数据忽略不保存。SIZE为允许参数输入的数据长度。页码,15/20UNTITLEDDOCUMENT200419FILE//D\LINUX_C\FUNCTION\11HTMLL输入的数据数值以LONGINT或DOUBLE型保存。H输入的数据数值以SHORTINT型保存。底下介绍TYPE的几种形式%D输入的数据会被转成一有符号的十进制数字(INT)。%I输入的数据会被转成一有符号的十进制数字,若输入数据以“0X”或“0X”开头代表转换十六进制数字,若以“0”开头则转换八进制数字,其他情况代表十进制。%0输入的数据会被转换成一无符号的八进制数字。%U输入的数据会被转换成一无符号的正整数。%X输入的数据为无符号的十六进制数字,转换后存于UNSIGNEDINT型变量。%X同%X%F输入的数据为有符号的浮点型数,转换后存于FLOAT型变量。%E同%F%E同%F%G同%F%S输入数据为以空格字符为终止的字符串。%C输入数据为单一字符。读取数据但只允许括号内的字符。如AZ。读取数据但不允许中括号的符号后的字符出现,如09返回值成功则返回参数数目,失败则返回1,错误原因存于ERRNO中。范例INCLUDEMAIN{INTIUNSIGNEDINTJCHARS5SCANF“DX5AZSF”,PRINTF“DDS\N”,I,J,S}执行100X1BAAAAAAAAAABBBBBBBBBB1027AAAAASPRINTF(格式化字符串复制)相关函数PRINTF,SPRINTF表头文件INCLUDE定义函数INTSPRINTFCHARSTR,CONSTCHARFORMAT,函数说明SPRINTF会根据参数FORMAT字符串来转换并格式化数据,然后将结果复制到参数STR所指的字符串数组,直到出现字符串结束’\0’为止。关于参数FORMAT字符串的格式请参考PRINTF。返回值成功则返回参数STR字符串长度,失败则返回1,错误原因存于页码,16/20UNTITLEDDOCUMENT200419FILE//D\LINUX_C\FUNCTION\11HTMLERRNO中。附加说明使用此函数得留意堆栈溢出,或改用SNPRINTF()。范例INCLUDEMAIN{CHARA”THISISSTRINGA”CHARBUF80SPRINTFBUF,”STHISISSTRINGA定义函数INTSSCANFCONSTCHARSTR,CONSTCHARFORMAT,函数说明SSCANF会将参数STR的字符串根据参数FORMAT字符串来转换并格式化数据。格式转换形式请参考SCANF。转换后的结果存于对应的参数内。返回值成功则返回参数数目,失败则返回1,错误原因存于ERRNO中。范例INCLUDEMAIN{INTIUNSIGNEDINTJCHARINPUT”100X1BAAAAAAAABBBBBBBB”CHARS5SSCANFINPUT,”DX5AZSF”,PRINTF“DDS\N”,I,J,S}执行1027AAAAAVFPRINTF(格式化输出数据至文件)相关函数PRINTF,FSCANF,FPRINTF表头文件INCLUDEINCLUDE定义函数INTVFPRINTFFILESTREAM,CONSTCHARFORMAT,VA_LISTAP页码,17/20UNTITLEDDOCUMENT200419FILE//D\LINUX_C\FUNCTION\11HTML函数说明VFPRINTF会根据参数FORMAT字符串来转换并格式化数据,然后将结果输出到参数STREAM指定的文件中,直到出现字符串结束’\0’为止。关于参数FORMAT字符串的格式请参考PRINTF。VA_LIST用法请参考附录C或VPRINTF范例。返回值成功则返回实际输出的字符数,失败则返回1,错误原因存于ERRNO中。范例参考FPRINTF及VPRINTF。VFSCANF(格式化字符串输入)相关函数SCANF,SSCANF,FSCANF表头文件INCLUDE定义函数INTVFSCANFFILESTREAM,CONSTCHARFORMAT,VA_LISTAP函数说明VFSCANF会自参数STREAM的文件流中读取字符串,再根据参数FORMAT字符串来转换并格式化数据。格式转换形式请参考SCANF。转换后的结果存于对应的参数内。VA_LIST用法请参考附录C或VPRINTF。返回值成功则返回参数数目,失败则返回1,错误原因存于ERRNO中。范例参考FSCANF及VPRINTF。VPRINTF(格式化输出数据)相关函数PRINTF,VFPRINTF,VSPRINTF表头文件INCLUDEINCLUDE定义函数INTVPRINTFCONSTCHARFORMAT,VA_LISTAP函数说明VPRINTF作用和PRINTF相同,参数FORMAT格式也相同。VA_LIST为不定个数的参数列,用法及范例请参考附录C。返回值成功则返回实际输出的字符数,失败则返回1,错误原因存于ERRNO中。范例INCLUDEINCLUDEINTMY_PRINTFCONSTCHARFORMAT,{VA_LISTAPINTRETVALVA_STARTAP,FORMATPRINTF“MY_PRINTF”RETVALVPRINTFFORMAT,AP页码,18/20UNTITLEDDOCUMENT200419FILE//D\LINUX_C\FUNCTION\11HTMLVA_ENDAPRETURNRETVAL}MAIN{INTI150,J100DOUBLEK314159MY_PRINTF“DFX\N”,J,K,IMY_PRINTF“2DD\N”,I,2,I}执行MY_PRINTF10031415996MY_PRINTF150150VSCANF(格式化字符串输入)相关函数VSSCANF,VFSCANF表头文件INCLUDEINCLUDE定义函数INTVSCANFCONSTCHARFORMAT,VA_LISTAP函数说明VSCANF会将输入的数据根据参数FORMAT字符串来转换并格式化数据。格式转换形式请参考SCANF。转换后的结果存于对应的参数内。VA_LIST用法请参考附录C或VPRINTF范例。返回值成功则返回参数数目,失败则返回1,错误原因存于ERRNO中。范例请参考SCANF及VPRINTF。VSPRINTF(格式化字符串复制)相关函数VNSPRINTF,VPRINTF,SNPRINTF表头文件INCLUDE定义函数INTVSPRINTFCHARSTR,CONSTCHARFORMAT,VA_LISTAP函数说明VSPRINTF会根据参数FORMAT字符串来转换并格式化数据,然后将结果复制到参数STR所指的字符串数组,直到出现字符串结束’\0’为止。关于参数FORMAT字符串的格式请参考PRINTF。VA_LIST用法请参考附录C或VPRINTF范例。返回值成功则返回参数STR字符串长度,失败则返回1,错误原因存于ERRNO中。范例请参考VPRINTF及VSPRINTF。页码,19/20UNTITLEDDOCUMENT200419FILE//D\LINUX_C\FUNCTION\11HTMLVSSCANF(格式化字符串输入)相关函数VSCANF,VFSCANF表头文件INCLUDE定义函数INTVSSCANFCONSTCHARSTR,CONSTCHARFORMAT,VA_LISTAP函数说明VSSCANF会将参数STR的字符串根据参数FORMAT字符串来转换并格式化数据。格式转换形式请参考附录C或VPRINTF范例。返回值成功则返回参数数目,失败则返回1,错误原因存于ERRNO中。范例请参考SSCANF及VPRINTF。页码,20/20UNTITLEDDOCUMENT200419FILE//D\LINUX_C\FUNCTION\11HTML

展开阅读全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值