131 lines
5.3 KiB
C
131 lines
5.3 KiB
C
/// @file stdio.h
|
|
/// @brief Standard I/0 functions.
|
|
/// @copyright (c) 2014-2023 This file is distributed under the MIT License.
|
|
/// See LICENSE.md for details.
|
|
|
|
#pragma once
|
|
|
|
#include "stdarg.h"
|
|
#include "stddef.h"
|
|
|
|
/// @brief The maximum number of digits of an integer.
|
|
#define MAX_DIGITS_IN_INTEGER 11
|
|
/// @brief The size of 'gets' buffer.
|
|
#define GETS_BUFFERSIZE 255
|
|
|
|
#ifndef EOF
|
|
/// @brief Define the End-Of-File.
|
|
#define EOF (-1)
|
|
#endif
|
|
|
|
#define SEEK_SET 0 ///< The file offset is set to offset bytes.
|
|
#define SEEK_CUR 1 ///< The file offset is set to its current location plus offset bytes.
|
|
#define SEEK_END 2 ///< The file offset is set to the size of the file plus offset bytes.
|
|
|
|
#ifndef __KERNEL__
|
|
/// @brief Writes the given character to the standard output (stdout).
|
|
/// @param character The character to send to stdout.
|
|
void putchar(int character);
|
|
|
|
/// @brief Writes the string pointed by str to the standard output (stdout)
|
|
/// and appends a newline character.
|
|
/// @param str The string to send to stdout.
|
|
void puts(const char *str);
|
|
|
|
/// @brief Returns the next character from the standard input (stdin).
|
|
/// @return The character received from stdin.
|
|
int getchar();
|
|
|
|
/// @brief Reads characters from the standard input (stdin).
|
|
/// @param str Where the characters are stored.
|
|
/// @return The string received from standard input.
|
|
char *gets(char *str);
|
|
|
|
/// @brief Same as getchar but reads from the given file descriptor.
|
|
/// @param fd The file descriptor from which it reads.
|
|
/// @return The read character.
|
|
int fgetc(int fd);
|
|
|
|
/// @brief Same as gets but reads from the given file descriptor.
|
|
/// @param buf The buffer where the string should be placed.
|
|
/// @param n The amount of characters to read.
|
|
/// @param fd The file descriptor from which it reads.
|
|
/// @return The read string.
|
|
char *fgets(char *buf, int n, int fd);
|
|
#endif
|
|
|
|
/// @brief Convert the given string to an integer.
|
|
/// @param str The string to convert.
|
|
/// @return The integer contained inside the string.
|
|
int atoi(const char *str);
|
|
|
|
/// @brief Converts the initial part of `str` to a long int value according to
|
|
/// the given base, which.
|
|
/// @param str This is the string containing the integral number.
|
|
/// @param endptr Set to the character after the numerical value.
|
|
/// @param base The base must be between 2 and 36 inclusive, or special 0.
|
|
/// @return Integral number as a long int value, else zero value is returned.
|
|
long strtol(const char *str, char **endptr, int base);
|
|
|
|
/// @brief Write formatted output to stdout.
|
|
/// @param fmt The format string.
|
|
/// @param ... The list of arguments.
|
|
/// @return On success, the total number of characters written is returned.
|
|
/// On failure, a negative number is returned.
|
|
int printf(const char *fmt, ...);
|
|
|
|
/// @brief Write formatted output to `str`.
|
|
/// @param str The buffer where the formatted string will be placed.
|
|
/// @param fmt Format string, following the same specifications as printf.
|
|
/// @param ... The list of arguments.
|
|
/// @return On success, the total number of characters written is returned.
|
|
/// On failure, a negative number is returned.
|
|
int sprintf(char *str, const char *fmt, ...);
|
|
|
|
#ifndef __KERNEL__
|
|
/// @brief The same as sprintf, but it putput on file.
|
|
/// @param fd The file descriptor associated with the file.
|
|
/// @param fmt Format string, following the same specifications as printf.
|
|
/// @param ... The list of arguments.
|
|
/// @return On success, the total number of characters written is returned.
|
|
/// On failure, a negative number is returned.
|
|
int fprintf(int fd, const char *fmt, ...);
|
|
#endif
|
|
|
|
/// @brief Write formatted data from variable argument list to string.
|
|
/// @param str Pointer to a buffer where the resulting C-string is stored.
|
|
/// @param fmt Format string, following the same specifications as printf.
|
|
/// @param args A variable arguments list.
|
|
/// @return On success, the total number of characters written is returned.
|
|
/// On failure, a negative number is returned.
|
|
int vsprintf(char *str, const char *fmt, va_list args);
|
|
|
|
#ifndef __KERNEL__
|
|
/// @brief Read formatted input from stdin.
|
|
/// @param fmt Format string, following the same specifications as printf.
|
|
/// @param ... The list of arguments where the values are stored.
|
|
/// @return On success, the function returns the number of items of the
|
|
/// argument list successfully filled. EOF otherwise.
|
|
int scanf(const char *fmt, ...);
|
|
|
|
/// @brief Read formatted data from string.
|
|
/// @param str String processed as source to retrieve the data.
|
|
/// @param fmt Format string, following the same specifications as printf.
|
|
/// @param ... The list of arguments where the values are stored.
|
|
/// @return On success, the function returns the number of items of the
|
|
/// argument list successfully filled. EOF otherwise.
|
|
int sscanf(const char *str, const char *fmt, ...);
|
|
|
|
/// @brief The same as sscanf but the source is a file.
|
|
/// @param fd The file descriptor associated with the file.
|
|
/// @param fmt Format string, following the same specifications as printf.
|
|
/// @param ... The list of arguments where the values are stored.
|
|
/// @return On success, the function returns the number of items of the
|
|
/// argument list successfully filled. EOF otherwise.
|
|
int fscanf(int fd, const char *fmt, ...);
|
|
#endif
|
|
|
|
/// @brief Prints a system error message.
|
|
/// @param s the message we prepend to the actual error message.
|
|
void perror(const char *s);
|