Вход и изход - 1
Chapter 7 - Input and Output
7.1 Standard Input and Output
7.2 Formatted Output - printf
7.3 Variable-length Argument Lists
7.4 Formatted Input - Scanf
7.5 File Access
Стандартен вход и изход
Четене на знак (символ)
int getchar(void)
ebook - The C Programming Language Ritchie & kernighan
-.doc
Пренасочване на входа
prog <infile
ebook - The C Programming Language Ritchie & kernighan
-.doc
Каскада (pipe) - изходът от една програма служи за вход на друга
програма
otherprog | prog
ebook - The C Programming Language Ritchie & kernighan
-.doc
Писане на знак (символ)
int putchar(int)
ebook - The C Programming Language Ritchie & kernighan
-.doc
Пренасочване на изхода
prog >outfile
ebook - The C Programming Language Ritchie & kernighan
-.doc
#include <stdio.h>
#include <ctype.h>
int main() /* lower: convert input to lower
case*/
{
int c
while ((c = getchar()) != EOF)
putchar(tolower(c));
return 0;
}
Форматиран изход - printf
int printf(char *format, arg1, arg2, ...);
int sprintf(char *string, char *format, arg1,
arg2, ...);
Форматиран вход - scanf
int scanf(char *format, ...)
int sscanf(char *string, char *format, arg1,
arg2, ...)
Пример:
#include <stdio.h>
int main() /* rudimentary calculator */
{
double sum, v;
sum = 0;
while (scanf("%lf", &v) == 1)
printf("\t%.2f\n",
sum += v);
return 0;
}
ebook - The C Programming Language Ritchie & kernighan
-.doc
25 Dec 1988
int day, year;
char monthname[20];
scanf("%d %s %d", &day, monthname, &year);
Достъп до файлове
Дефиниране на файлова променлива:
FILE *fp;
Функция за отваряне на файл:
FILE *fopen(char *name, char *mode);
Отваряне на файл:
fp = fopen(name, mode);
Четене и писане на един знак (символ) от и във файл:
int getc(FILE *fp);
int putc(int c, FILE *fp);
Форматирано четене и писане от и във файл:
int fscanf(FILE *fp, char *format, ...)
int fprintf(FILE *fp, char *format, ...)
Затваряне ня файл:
int fclose(FILE *fp)
Пример:
Програма за обединение на файлове, подобна на cat:
#include <stdio.h>
/* cat: concatenate files, version 1 */
int main(int argc, char *argv[])
{
FILE *fp;
void filecopy(FILE *, FILE *);
if (argc == 1) /* no args; copy
standard input */
filecopy(stdin, stdout);
else
while(--argc
> 0)
if ((fp = fopen(*++argv, "r")) == NULL) {
printf("cat: can't open %s\n, *argv);
return 1;
}
else {
filecopy(fp, stdout);
fclose(fp);
}
return 0;
}
/* filecopy: copy file ifp to file ofp */
void filecopy(FILE *ifp, FILE *ofp)
{
int c;
while ((c = getc(ifp)) != EOF)
putc(c, ofp);
}