170 likes | 267 Views
Input og output mv. printf. int printf(char *format, arg1, arg2, … , argn) returnerer antal udskrevne tegn Format indeholder to typer objekter: almindelige tegn, som kopieres til outputstrømmen konverteringsspecifikationer der hver foretager en konvertering (begynder med et %).
E N D
printf int printf(char *format, arg1, arg2, … , argn) returnerer antal udskrevne tegn Format indeholder to typer objekter: • almindelige tegn, som kopieres til outputstrømmen • konverteringsspecifikationer der hver foretager en konvertering (begynder med et %)
printf. Konverteringstegnene d int decimalt o int oktalt x, X int hexadicimalt u int uden fortegn c et tegn s en c-streng f float e, E double % der konverteres ikke men udskrives et %
printf. Formatering main() { float f = 5.2; printf("%f\n", f); printf(”%5f\n”, f); printf("%15f\n", f); printf("%.2f\n", f); printf("%15.2f\n", f); } Output 5.200000 5.200000 5.200000 5.20 5.20
printf. Formatering printf(":%s:\n", "Hello World"); :Hello World: printf(":%10s:\n", "Hello World"); :Hello World: printf(":%.10s:\n", "Hello World"); :Hello Worl: printf(":%-10s:\n", "Hello World"); :Hello World: printf(":%.15s:\n", "Hello World"); :Hello World: printf(":%-15s:\n", "Hello World"); :Hello World : printf(":%15.10s:\n", "Hello World"); : Hello Worl: printf(":%-15.10s:\n", "Hello World"); :Hello Worl :
sprintf sprintf gør det samme som printf bortsetfra den gemmer output i en c-streng int sprintf(char *streng, char *format, arg1, … , argn);
scanf int scanf(char *format, arg1, arg2, … , argn) arg1 … argn skal alle være pointere. int day, year; char mon[20]; scanf(”%d %s %d”, &day, mon, &year);
sscanf Som scanf bortset fra der læses fra en c-streng int sscanf(char *streng, char *format, arg1, … ,argn);
FILE FILE *fp; FILE *fopen(char *name, char *mode) Eksempel: fp = fopen(”fil.txt”, ”r”); mode kan være ”r” læse ”w” skrive ”a” append Eksisterer file ikke laves den. int fclose(FILE *fp); // lukker filen
getc og putc int getc(FILE *fp) int putc(FILE *fp) der er altid tre åbne filer: stdin, stdout, stderr #define getchar() getc(stdin) #define putchar() putc(stdout)
fprintf og fscanf fprintf skriver på en fil int fprintf(FILE *fp, char *format, arg1, arg2, … , argn) int fscanf(FILE *fp, char *format, arg1, arg2, … , argn)
Filedescriptor. Åben en eksisterende fil #include <fcntl.h> int fd; // fd er en file descriptor fd = open(char *name, int flags, int perm); flag: O_RDONLY read only O_WRONLY write only O_RDWR read / write permissions : 0 eller 0xxx owner, group and others
Filedescriptor. Åben en ny fil int fd; fd = create(char *name, int perm);
Læs og skriv int antal_laest = read(int fd, char* buf, int antal); antal_laest = 0: End Of File antal_laest < 0: fejl int antal_skrevet = write(int fd, char* buf, int antal);
Eksempel på kopiering #include <fcntl.h> #define BUFSIZE 1024 int main() // kopier fra stdin til stdout { char buf[BUFSIZE]; int n; while((n = read(0, buf, BUFSIZE)) > 0) write(1, buf, n); return 0; }
lseek long lseek(int fd, long offset, int origin) ændre filpointeren til offset, der tages relativt fra positionen, der er angivet med origin. origin 0: begyndelsen 1: nuværende position 2: slutningen lseek(fd, 0L, 2) sætter pointeren til slutningen af filen
Strengoperationer strcat(s,t) Indsæt t efter strengen s strcat(s, t, n) Som strcat, men kun de første n tegn strcmp(s, t) Returner en negativ, 0 eller en positiv værdi for s < t, s == t, s > t strcmp(s, t, n) Som strcmp men kun de første n tegn strcpy(s, t) Kopier t til s strcpy(s, t, n) Som strcpy men kun de første n tegn strlen(s) Længden af s strchr(s, c) Returner en pointer til det første c i s, eller null hvis c ikke findes strrchr(s,c) Returner en pointer til det sidste c i s, eller null hvis c ikke findes