⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stdio.h

📁 linux内核
💻 H
字号:
/* * stdio.h */#ifndef _STDIO_H#define _STDIO_H#include <klibc/extern.h>#include <stdarg.h>#include <stddef.h>/* This structure doesn't really exist, but it gives us something   to define FILE * with */struct _IO_file;typedef struct _IO_file FILE;#ifndef EOF# define EOF (-1)#endif#ifndef BUFSIZ# define BUFSIZ 4096#endif#define SEEK_SET 0#define SEEK_CUR 1#define SEEK_END 2/* * Convert between a FILE * and a file descriptor.  We don't actually * have any in-memory data, so we just abuse the pointer itself to * hold the data.  Note, however, that for file descriptors, -1 is * error and 0 is a valid value; for FILE *, NULL (0) is error and * non-NULL are valid. */static __inline__ int fileno(FILE *__f){  /* This should really be intptr_t, but size_t should be the same size */  return (int)(size_t)__f - 1;}/* This is a macro so it can be used as initializer */#define __create_file(__fd) ((FILE *)(size_t)((__fd) + 1))#define stdin  __create_file(0)#define stdout __create_file(1)#define stderr __create_file(2)__extern FILE *fopen(const char *, const char *);struct dev_info;__extern FILE *fopendev(const struct dev_info *, const char *);static __inline__ FILE *fdopen(int __fd, const char *__m){  (void)__m; return __create_file(__fd);}static __inline__ int fclose(FILE *__f){  extern int close(int);  return close(fileno(__f));}__extern int fputs(const char *, FILE *);__extern int puts(const char *);__extern int fputc(int, FILE *);#define putc(c,f)  fputc((c),(f))#define putchar(c) fputc((c),stdout)__extern int    fgetc(FILE *);__extern char * fgets(char *, int, FILE *);#define getc(f) fgetc(f)__extern size_t _fread(void *, size_t, FILE *);__extern size_t _fwrite(const void *, size_t, FILE *);#ifndef __NO_FREAD_FWRITE_INLINESextern __inline__ size_tfread(void *__p, size_t __s, size_t __n, FILE *__f){  return _fread(__p, __s*__n, __f)/__s;}extern __inline__ size_tfwrite(void *__p, size_t __s, size_t __n, FILE *__f){  return _fwrite(__p, __s*__n, __f)/__s;}#endif/* No seek, but we can tell */__extern long ftell(FILE *);__extern int printf(const char *, ...);__extern int vprintf(const char *, va_list);__extern int fprintf(FILE *, const char *, ...);__extern int vfprintf(FILE *, const char *, va_list);__extern int sprintf(char *, const char *, ...);__extern int vsprintf(char *, const char *, va_list);__extern int snprintf(char *, size_t n, const char *, ...);__extern int vsnprintf(char *, size_t n, const char *, va_list);__extern int asprintf(char **, const char *, ...);__extern int vasprintf(char **, const char *, va_list);/* No buffering, so no flushing needed */extern __inline__ intfflush(FILE *__f){  (void)__f;  return 0;}__extern int sscanf(const char *, const char *, ...);__extern int vsscanf(const char *, const char *, va_list);__extern void perror(const char *);__extern int rename(const char *, const char *);#endif /* _STDIO_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -