→Tablice znaków: przykłąd
(Revert, usunięcie interwiki (teraz w Wikidanych)) Znacznik: Edytor kodu źródłowego 2017 |
(→Tablice znaków: przykłąd) |
||
* bufory - gdy wykorzystujemy je do przechowywania ogólnie pojętych danych, gdy traktujemy je jako po prostu "ciągi bajtów" (typ char ma rozmiar 1 bajta, więc jest elastyczny do przechowywania np. danych wczytanych z pliku przed ich przetworzeniem).
* napisy - gdy zawarte w nich dane traktujemy jako ciągi liter; jest im poświęcony osobny rozdział [[C/Napisy|Napisy]].
Przykład:
<source lang=c>
/*
http://joequery.me/code/snprintf-c/
gcc a.c -Wall
./a.out
012345678
hello th\0
turtle\078
2222\05678
*/
#include<stdio.h>
#define BUFSIZE 9
void init_buf(char *buf, size_t size){
int i;
for(i=0; i<size; i++){
buf[i] = i + '0'; // int to char conversion
}
}
void print_buf(char *buf){
int i;
char c;
for(i=0; i<BUFSIZE; i++){
c = buf[i];
if(c == '\0'){
printf("\\0");
}
else{
printf("%c", buf[i]);
}
}
printf("\n");
}
int main(){
char buf[BUFSIZE];
init_buf(buf, BUFSIZE);
print_buf(buf);
// hello there! == 12 characters, > BUFSIZE
init_buf(buf, BUFSIZE);
snprintf(buf, BUFSIZE, "hello there!");
print_buf(buf);
// turtle == 6 charaters, < BUFSIZE
init_buf(buf, BUFSIZE);
snprintf(buf, BUFSIZE, "turtle");
print_buf(buf);
// 2222220 == 7 charaters, > 5
init_buf(buf, BUFSIZE);
snprintf(buf, 5, "%d", 222222 * 10);
print_buf(buf);
return 0;
}
</source>
==Tablice wielowymiarowe==
|