Konsep Dasar C
Sejarah C
Akar dari bahasa C adalah BPCL
yang dikembangkan oleh
Martin Richards pada tahun
1967, kemudian dikembangkan
menjadi bahasa B oleh Ken
Thompson pada tahun 1970.
Yang dikembangkan lebih lanjut
menjadi bahasa C oleh Dennis
Ritchie sekitar tahun 1970-an
di Bell Telephone Laboratories
Inc.
Alasan-alasan
Menggunakan Bahasa C
Bahasa C tersedia hampir di semua jenis komputer.
Kode bahasa C bersifat Portable.
Bahasa C hanya menyediakan sedikit Reserved Word,
keandalan C dicapai dengan fungsi-fungsi pustaka.
Proses Executable program dalam bahasa C lebih
cepat.
Dukungan pustaka yang banyak.
C merupakan bahasa terstruktur.
Selain bahasa tingkat tinggi, C juga dianggap sebagai
bahasa tingkat menengah.
C adalah bahasa kompiler.
Struktur Program C
Bentuk Umum:
main( )
{ awal program fungsi utama
statement;
} akhir program
fungsi_fungsi_lain( )
{
statement; fungsi-fungsi lain
}
Contoh Program
preprocessor
directive
# include <stdio.h>
main( ) header file
{
printf(Hello World);
}
Header file
13
Variabel
Variables
Variable names correspond to locations
in the computer's memory
Every variable has a name, a type, a
size and a value
Whenever a new value is placed into a
variable (through scanf, for example), it
replaces (and destroys) the previous
value
Reading variables from memory does
integer1 45
not change them
A visual representation
14
Variabel
15
Contoh Variabel dan Tipe data
#include <stdio.h>
main( )
{
int a, b, c, sum; a = 1; b = 2; c = 3;
sum = a + b + c;
printf("sum is %d", sum);
}
16
Variabel Static
Kalau variabel statis bersifat internal, maka
variabel hanya dikenal oleh fungsi tempat
variabel dideklarasikan
Kalau variabel statis bersifat eksternal, maka
variabel dapat dipergunakan oleh semua fungsi
yang terletak pada file yang sama
Tempat variabel statis dideklarasikan Berbeda
dengan variabel lokal, variabel statis tidak akan
hilang sekeluarnya dari fungsi (nilai pada
variabel akan tetap diingat).
Inisialisasi akan dilakukan hanya sekali, yaitu
saat fungsi dipanggil yang pertama kali. Kalau
tak ada inisialisasi oleh pemrogram secara
otomatis akan diberi nilai awal nol 17
Contoh Variabel Static
#include <stdio.h>
void func() {
static int x = 0; // x is initialized only once across three calls of func()
printf("%d\n", x); // outputs the value of x
x = x + 1;
}
int main() {
func(); // prints 0
func(); // prints 1
func(); // prints 2
return 0;
}
18
Operator Bitwise
Seluruh data direpresentasikaan secara internal dalam untaian bit
(0 atau 1), sebanyak 8 bit dalam 1 byte
Operator Name Description
& bitwise AND The bits in the result are set to 1 if the
corresponding bits in the two operands are both 1.
^ bitwise exclusive OR The bits in the result are set to 1 if exactly one of the
corresponding bits in the two operands is 1.
<< left shift Shifts the bits of the first operand left by the number
of bits specified by the second operand; fill from
right with 0 bits.
>> right shift Shifts the bits of the first operand right by the
number of bits specified by the second operand; the
method of filling from the left is machine dependent.
~ Ones complement All 0 bits are set to 1 and all 1 bits are set to 0.
19
1 /* Fig. 10.9: fig10_09.c
2 Using the bitwise AND, bitwise inclusive OR, bitwise
3 exclusive OR and bitwise complement operators */
4 #include <stdio.h>
5 Contoh operator bitwise
6 void displayBits( unsigned );
7
8 int main()
9 {
10 unsigned number1, number2, mask, setBits;
11
12 number1 = 65535;
13 mask = 1;
14 printf( "The result of combining the following\n" );
15 displayBits( number1 );
16 displayBits( mask );
17 printf( "using the bitwise AND operator & is\n" );
18 displayBits( number1 & mask );
19
20 number1 = 15;
21 setBits = 241;
22 printf( "\nThe result of combining the following\n" );
23 displayBits( number1 );
24 displayBits( setBits );
25 printf( "using the bitwise inclusive OR operator | is\n" );
26 displayBits( number1 | setBits );
27
28 number1 = 139;
29 number2 = 199;
30 printf( "\nThe result of combining the following\n" ); 20
31 displayBits( number1 );
32 displayBits( number2 );
33 printf( "using the bitwise exclusive OR operator ^ is\n" );
34 displayBits( number1 ^ number2 );
35
36 number1 = 21845;
37 printf( "\nThe one's complement of\n" );
38 displayBits( number1 );
39 printf( "is\n" );
40 displayBits( ~number1 );
41
42 return 0;
43 }
44
45 void displayBits( unsigned value )
46 {
47 unsigned c, displayMask = 1 << 31; MASK created with only one set bit
48
i.e. (10000000 00000000)
49 printf( "%7u = ", value );
50
51 for ( c = 1; c <= 32; c++ ) {
52 putchar( value & displayMask ? '1' : '0' );
53 value <<= 1;
The MASK is constantly ANDed with value.
54
55 if ( c % 8 == 0 ) MASK only contains one bit, so if the AND
56 putchar( ' ' ); returns true it means value must have
57 }
that bit.
58
59 putchar( '\n' ); value is then shifted to test the next bit.
60 }
21
The result of combining the following
65535 = 00000000 00000000 11111111 11111111
1 = 00000000 00000000 00000000 00000001
using the bitwise AND operator & is
1 = 00000000 00000000 00000000 00000001
Program Output
The result of combining the following
15 = 00000000 00000000 00000000 00001111
241 = 00000000 00000000 00000000 11110001
using the bitwise inclusive OR operator | is
255 = 00000000 00000000 00000000 11111111
22
Bit Fields
Bit field
Member of a structure whose size (in
bits) has been specified
Enable better memory utilization
Must be declared as int or unsigned
Cannot access individual bits
Declaring bit fields
Follow unsigned or int member with a
colon (:) and an integer constant
representing the width of the field
Example:
struct BitCard {
unsigned face : 4;
unsigned suit : 2;
unsigned color : 1;
};
23
Bit Fields
Unnamed bit field
Field used as padding in the structure
Nothing may be stored in the bits
struct Example {
unsigned a : 13;
unsigned : 3;
unsigned b : 4;
}
Unnamed bit field with zero width
aligns next bit field to a new storage
unit boundary
24
Konversi
kompiler C mempunyai pedoman untuk
operand yang berbeda tipe :
1.Tipe char akan dikonversikan ke tipe int
2.Tipe float akan dikonversikan ke tipe double
3.Jenjang tertinggi adalah mulai dari long
double, double, long int, unsigned int, dan
int. ini berarti tipe double dioperasikan
dengan tipe int akan menghasilkan tipe
double.
Type Casting
Type casting dalam bahasa C berfungsi untuk meng-konversikan tipe data sementara.
Perhatikan contoh berikut :
int main(){
int X = 5;
float Y;
Y = X/2;
printf(%.1f, Y); //Akan tercetak 3.0 karena X bertipe integer
}
Untuk menghindari kesalahan hassil perhitungan maka dapat dilakukan type casting
int main(){
int X = 5;
float Y;
Y = float (X) /2; //Merubah tipe data X sementara menjadi float
printf(%.1f, Y); //Akan tercetak 3.5
}
PERTEMUAN MINGGU 6
MEMASUKKAN DATA
Memasukkan Data Tidak Terformat
Fungsi fungsi yang digunakan untuk
memasukkan data tidak terformat adalah fungsi
fungsi getch(), getche(), getchar(), gets().
Fungsi fungsi ini digunakan untuk memasukkan
nilai sebuah karakter atau nilai string.
Fungsi-fungsi untuk
menampilkan hasil di layar
prototypenya berada difile
judul stdio.h dan conio.h.
PUTS()
Digunakan untuk menampilkan nilai String dan sudah
mengandung Line Feed atau escape sequence ganti baris,
maka tidak perlu menggunakan \n
Contoh :
#include
Main()
{
puts(Bahasa C oke loch);
puts(Belajar bahasa C yuuuk);
}
PUTCHAR()
Digunakan untuk menampilkan sebuah karakter saja dan tidak
mengandung escape sequence (\n)
Contoh :
#include
Main()
{
Char a;
Printf (a= );
Scanf(%c,&a);
Printf(data yang dimasukan );
Putchar(\n);
Putchar(a);
}
PUTCHAR()
Pada putchar yang petama kita ingin membuat
program untuk ganti baris menggunakan \n. kita
menggunakan tanda petik tunggal () karena karakter
dalam program akan dikenal jika diberi tanda petik
tunggal. Fungsi putchar ini hanya bisa menampilkan
satu buah karakter saja sehingga apapun nilai yang
kita masukkan hanya karakter pertama yang akan
ditampilkan.
HASIL TERFORMAT
Untuk menampilkan hasil terformat
digunakan fungsi printf().
KODE-KODE FORMAT UNTUK FUNGSI PRINTF
OPERATOR
OPERATOR
HUBUNGAN
Operator Keterangan
< Lebih kecil dari
<= Lebih kecil atau sama dengan
> Lebih besar dari
>= Lebih besar atau sama dengan
== Sama dengan
!= Tidak sama dengan
Contoh Penggunaan Operator
OPERATOR
LOGIKA
Operator Keterangan
&& Logika DAN (AND)
!! Logika ATAU (OR)
Hubungan Logika dan Hasilnya
X Y X && Y X !! Y !X
1 1 1 1 0
1 0 0 1 0
0 1 0 1 1
0 0 0 0 1
OPERATOR
PENGERJAAN
Operator Keterangan
* Perkalian
/ Pembagian
% Pembagian modulus (sisa pembagian)
+ Pertambahan
- Pengurangan
Contoh Soal Penggunaan Operator Aritmatika
#include stdio.h
#include conio.h
void main()
{ clrscr(); // untuk membersihkan layar
printf(Nilai dari 9 + 4 = %i, 9 + 4); /* mencetak
hasil 9 + 4 */
printf(Nilai dari 9 - 4 = %i, 9 - 4); /* mencetak
hasil 9 - 4 */
printf(Nilai dari 9 * 4 = %i, 9 * 4); /* mencetak
hasil 9 * 4 */
printf(Nilai dari 9 / 4 = %i, 9 / 4); /* mencetak
hasil 9 / 4 */
printf(Nilai dari 9 \% 4 = %i, 9 % 4); /* mencetak
hasil 9 % 4 */
getch();
}
OPERATOR
UNARY
Operator Keterangan
- Unary minus
++ Peningkatan dengan penambahan nilai 1
-- Penurunan dengan pengurangan nilai 1
(tipe) Cast
Sizeof Ukuran dari operan dalam byte
! Unary NOT
~ Operator unary komplemen satu (bitwise NOT)
& Menghasilkan alamat memori operand (operator pointer)
* Menghasilkan nilai pengenal di alamatnya (operator
pointer)
OPERATOR
BITWISE
Operator Keterangan
<< Pergeseran bit ke kiri
>> Pergeseran bit ke kanan
& Bitwise AND
^ Bitwise XOR
| Bitwise OR
Contoh Soal
A. OPERASI KARAKTER
- Mempunyai lebar nilai 1 byte.
- Konstanta karakter ditulis dengan tanda petik
tunggal.
- Varible karakter dideklarasikan dengan
menggunakan kata kunci char.
- Operasi Karekter ini berada di file pustaka ctype.h
- Dikelompokkan menjadi dua, yaitu yang pertama
adalah untuk menyeleksi status dari suatu nilai
karakter. Yang kedua adalah mengonversikan
suatu nilai karakter.
B. OPERASI STRING
Percabangan &
Perulangan
Statemen if
Statemen if digunakan untuk memilih di antara satu atau
lebih kondisi/alternatif
Contoh:
if ( grade >= 60 ) {
printf( "Passed\n" );
} /* end if */
Flowchart statemen if tunggal
Statemen if ... else
Statemen ifelse memungkinkan Anda untuk menentukan
tindakan yang berbeda harus dilakukan ketika kondisi benar
daripada ketika kondisi salah
Contoh:
if ( grade >= 60 ) {
printf( "Passed\n" );
} /* end if */
else {
printf( "Failed\n" );
} /* end else */
Switch
Switch adalah statemen dalam bahasa C yang fungsinya sama
dengan if (yaitu untuk melakukan sebuah proses berdasar
kondisi tertentu), namun dengan banyak kondisi (multi
kondisi).
Terdiri dari serangkaian label case, sebuah default case dan
pernyataan untuk melaksanakan untuk setiap case.
Bentuk umum:
switch(kondisi) {
case konstanta1:
statement;
break;
case konstanta2:
statement;
break;
.
.
deafault:
statement;
}
Seleksi Multi kondisi
Bahasa C menyediakan operator logika
yang dapat digunakan dalam seleksi
dengan multi kondisi.
Operator yang digunakan:
&& (logika AND)
|| (logika OR)
! (logika NOT atau negasi)
Contoh:
Seleksi bertingkat
Seleksi bertingkat dapat digunakan dengan
meletakkan statemen if ... else di dalam statemen
if ... else
Contoh:
if ( grade >= 90 )
printf( "A\n" );
else if ( grade >= 80 )
printf( "B\n" );
else if ( grade >= 70 )
printf( "C\n" );
else if ( grade >= 60 )
printf( "D\n" );
else
printf( "F\n" );
Struktur Kendali
Perulangan
-for ( ), while ( ), do while ( )
- break, continue
- pengulangan bertingkat
Counter pada
Perulangan
Terdiri dari :
- Nama dari variabel kontrol
- Nilai yang diberikan untuk variabel
kontrol
- Penjumlahan atau pengurangan pada
nilai variabel kontrol untuk melakukan
pengulangan
- Kondisi yang menentukan sampai
berapa kali pengulangan dilakukan.
Flowchart Perulangan
Statement For ( )
Bentuk Umum :
- Ekspression 1 :
Nama varibel kontrol
- Ekspression 2 :
Kondisi perulangan
- Ekspression 3 :
Penjumlahan dan pengurangan nilai
dari variabel kontrol
Statement For ( )
Contoh :
Statement While ( )
Bentuk Umum :
- Ekspression 1 :
Nama varibel kontrol, diakhiri dengan tanda
titik koma (;)
- Ekspression 2 :
Kondisi perulangan
- Ekspression 3 :
Penjumlahan dan pengurangan nilai dari
variabel kontrol. Diakhiri dengan tanda titik
Statement While ( )
Contoh :
Statement Do While ( )
While ( ) : kondisi diperiksa pada awal
sebelum dilakukan perintah-perintah
yang akan dilakukan pada perulangan.
Contoh :
Statement Break
The break and continue statements are
used to alter the flow of control.
The break statement,when executed in a
while, for, dowhile or switch statement,
causes an immediate exit from that
statement.
Program execution continues with the next
statement. Common uses of the break
statement are to escape early from a loop
or to skip the remainder of a switch
statement.
Statement Break
Contoh :
Statement Continue
The continue statement, when executed in a while, for
or dowhile statement, skips the remaining
statements in the body of that control statement and
performs the next iteration of the loop.
In while and dowhile statements, the loop-
continuation test is evaluated immediately after the
continue statement is executed.
In the for statement, the increment expression is
executed, then the loop-continuation test is evaluated.
Earlier, we said that the while statement could be used
in most cases to represent the for statement. The one
exception occurs when the increment expression in the
while statement follows the continue statement.
Statement Continue
Contoh :
Preprosessor Function
Pertemuan Minggu 9
Pendahuluan
C preprocessor mengeksekusi sebelum program
dikompilasi.
Beberapa tindakan yang dilakukan adalah
memasukkan file lain dalam file yang sedang
dikompilasi, mendefinisikan konstanta simbolik
dan
macro, kompilasi bersyarat dari kode program dan
pelaksanaan bersyarat dari pengarah
preprocessor.
Pengarah Preprocessor dimulai dengan # dan
hanya karakter white-space dan komentar bisa
muncul sebelum sebuah pengarah preprosesor
pada satu garis.
Pengarah Preprosessor :
#include
Preprosessor Direktif #include
menyebabkan sebuah salinan dari
file tertentu ditempatkan pada suatu
pengarah.
Bentuk dari #include adalah :
#include <namafile>
#include namafile
Pengarah Preprosessor :
#include
Bentuk #include <namafile>
mengisyaratkan bahwa pencarian file
dilakukan pada direktori khusus (direktori
file include ).
Bentuk #include namafile
menyatakan bahwa pencarian file
dilakukan pertama kali pada direktori aktif
tempat program sumber dan seandainya
tak ditemukan pencarian akan dilanjutkan
pada direktori lainnya yang sesuai dengan
perintah pada sistem operasi, yaitu PATH.
Pengarah Preprosessor :
#include
#include biasanya digunakan untuk menyertakan
header programmer-didefinisikan.
Jika nama file terlampir dalam kurung sudut
(<dan>)-digunakan untuk header library standar
# include digunakan untuk menyertakan header
library standar seperti stdio.h dan stdlib.h dan
dengan program yang terdiri dari beberapa file
sumber yang harus
dikompilasi bersama-sama.
Sebuah header yang berisi deklarasi umum untuk
program yang terpisah file ini sering dibuat dan
dimasukkan dalam file.
Contoh deklarasi tersebut struktur dan serikat
deklarasi, enumerations dan prototipe fungsi.
Contoh
Contoh 1 :
//my first program in C++
#include <iostream.h>
int main()
{ cout << Selamat pagi dunia!;
return 0;
}
Hasil :
Selamat pagi dunia!
Penjelasan
#include <iostream.h>
#include <iostream.h> indikasi
untuk menyertakan header file
standard iostream, termasuk I/O
dalam C++
Pengarah Preprosessor :
#error
Bentuk Umum
#error tokens
Menampilkan sebuah pesan
termasuk token yang ditentukan
dalam pengarah.
Tokens adalah serangkaian karakter
yang dipisahkan oleh spasi.
Contoh
#error 1 Out of range error
Terdiri dari 6 token.
Ketika #error directive diproses pada
sistem, token dalam pengarah akan
menampilkan sebuah pesan
kesalahan, pemberhentian
preprocessing dan program tidak
dikompilasi.
Pengarah Preprocessor:
#pragma
Bentuk umum :
#pragma tokens
Penggunaan #pragma menyebabkan
sebuah aksi dari implementation-
defined.
Pragma yang tidak dikenali sebagai
sebuah implementation akan
diabaikan.
PERTEMUAN MINGGU 10
DEFINISI FUNGSI
Adalah suatu bagian dari program yang
dimaksudkan untuk mengerjakan suatu tugas
tertentu dan letaknya dipisahkan dari bagian
program yang menggunakannya.
Fungsi dalam bahasa C adalah subprogram.
Fungsi minimal yang harus ada didalam
suatu
program adalah main() dan muncul hanya
sekali.
SIFAT DAN MANFAAT FUNGSI
1. Fungsi menjadikan Program Bahasa C
mempunyai struktur yang jelas.
2. Fungsi dapat digunakan untuk menghindari
penulisan yang sama yang ditulis secara
berulang-ulang.
3. Setiap fungsi memiliki tingkatan yang sama
dan berdiri sendiri.
4. Turbo C tidak membedakan fungsi yang
menghasilkan nilai (fungsi) dan fungsi yang
menghasilkan data (prosedur).
BENTUK UMUM FUNGSI
tipe nama-fungsi(argumen1, argumen2)
{
deklarasi variable lokal
statement-statement tubuh fungsi
return (ungkapan)
}
Contoh:
Int Fungsi_ku(float A, int B, char C)
HASIL BALIK FUNGSI
#include <stdio.h>
void Tampil(char *String, int Jumlah);
main()
{
Tampil(Bahasa C \n,3);
}
Void Tampil(char *String, int N)
{
int I;
for(I=1; I<=N; I++) printf(String);
}
OUTPUT
Jika program ini dijalankan, maka
akan menampilkan nilai stringnya
sebanyak 3 kali, sbb:
Bahasa C
Bahasa C
Bahasa C
Yang memberikan Nilai Balik:
#include <stdio.h>
Long int Faktorial(int N);
Main()
{
int I;
long int Fak;
printf(Berapa Faktorial ? ); scanf(%d, &N);
Fak = Faktorial(N);
printf(%d faktorial = %d \n,N,Fak);
}
Long int Faktorial(int N)
{
int I; long int F=1;
if(N<=0)
return(0);
for(I=2; I<=N; I++) F*=I;
return(F);
Statemen yang
}
menghasilkan nilai balik
RUANG LINGKUP VARIABLE
I. Variable Lokal
Merupakan variable yang nama dan nilainyahanya
dikenal di suatu blok statemen tertentu saja di dalam
suatu fungsi.
1kali
2kali
3kali
PENJELASAN OUTPUT :
Program ini mempunyai kondisi
pengakhiran rekursi, yaitu jika nilai N
sudah lebih kecil atau sama dengan
nol.
Array (Larik)
Array
Adalah kumpulan dari nilai-nilai data bertipe
sama dalam urutan tertentu yang
menggunakan
sebuah nama yang sama.
index
Array 1 Dimensi
Mendefinisikan :
intc[12];
intb[100],x[27];
Inisialisasi array :
Int n[5] = {1,2,4,5,6};
Int n[10]={0} : semua nilai pada
n[0],n[1],,n[9] = 0.
Int n[ ]={11,22,23,25} : membentuk
array dengan 5 element dengan nilai
yang telah ditentukan.
Contoh Program : Inisialisasi Array
menggunakan Looping
Output
Contoh Program : Menghitung frekuensi
Output
Array 2 Dimensi
Inisialisasi :
Int b [2] [2] = { { 1,2}, {3,4} }
Inisialisasi diatas akan menghasilkan :
b[0][0] = 1, b[0][1] = 2, b[1][0] = 3, b[1][1] =
4.
Contoh : Mencetak nilai array
Lanjutan ..
Output
Pertemuan 12
Pointer
Pointer
Suatu pointer (variabel penunjuk)
adalah suatu variabel yang berisi
dengan alamat lokasi suatu memori
tertentu.
Operator * digunakan untuk mendapatkan
nilai dari operandnya. Operand untuk
operator * adalah variabel pointer.
Operator & digunakan untuk mendapatkan
alamat memori dari operandnya.
Pointer
Contoh :
inty=5;
int*yPtr;
yPtr=&y;
Pointer
Contoh Program : Basic Pointer
Output
Pointer to Function
Pointer to function berisi alamat dari sebuah fungsi di dalam
memori
Sintak:
return_type (* nama_pointer)(parameter);
Contoh:
int (*compare)(int a, int b);
Artinya: compare adalah nama pointer to function, yang
menunjuk sebuah fungsi yang mengembalikan nilai tipe integer,
dan fungsi tersebut mempunyai 2 parameter bertipe integer
int main()
{
int x;
int(*f)(int);
f=fungsi1;
x=(*f)(3);
printf("x=%d\n",x);
f=fungsi2;
x=(*f)(13);
printf("x=%d\n",x);
getch();
return(0);
}
int fungsi1(int a)
{
a++;
return a;
}
int fungsi2(int b)
{
b = b * b;
return b;
}
Pointer & Array
bPtr=&b[0];
Mengambil alamat memory pada
elemen pertama pada variable b.
*(bPtr+3);
Elemen ke 3 pada variable array b (b[3])
dapa direferensi dengan sintaks diatas.
Contoh Pointer & Array
Output
Contoh
Output
PERTEMUAN MINGGU 13
STREAM
Supaya data yang di-key-in melalui
keyboard tidak hilang (saat komputer
dimatikan) maka perlu disimpan ke dalam
secondary storage device sebagai file data
Stream ialah kumpulan karakter yang
disusun dalam baris-baris yang berpindah
dari satu media ke media lain pada sistem
komputer. Semua data masukan dan
keluaran berupa stream. Bahasa C
memperlakukan file sebagai stream.
136
STREAM
Saat program C dijalankan maka tiga buah
stream standar OTOMATIS diaktifkan:
1. Standard Input Stream, mengatur aliran data
masukan melalui ketikan keyboard
2. Standard Output Stream, mengatur aliran
data keluaran ke layar monitor
3. Standard Error Stream, mengatur tampilan
pesan kesalahan ke layar monitor
Masing-masing stream berasosiasi dengan
sebuah file.
137
FILE
Definisi File
File adalah kumpulan record
Record adalah kumpulan field
Field kumpulan byte
Byte dalah kumpulan bit
138
FILE
Operasi membuka (mengaktifkan) sebuah file
mengakibatkan sebuah POINTER dikembalikan
kepada instruksi pemanggil. Pointer ini menunjuk
ke sebuah struktur data bertipe FILE yang sudah
didefinisikan
Standard inputdi stdio.h stdin
stream stdout
Standard output stderr
stream
Standard error
streamstream File pointer
139
FILE
typedef struct {
int level; // fill/empty level of
buffer
unsigned flags; // File status flags
char fd; // File descriptor
unsigned char hold; // Ungetc char if no buffer
int bsize; // Buffer size
unsigned char *buffer; // Data transfer buffer
unsigned char *curp; // Current active pointer
unsigned istemp; // Temporary file indicator
140
TIPE FILE
TEXT FILE
berkas yang disimpan dalam format teks. Biasanya
diistilahkan dengan FILE ASCII.
besarnya storage penyimpanan disesuaikan
dengan jumlah angka bilangan: 10000 perlu 5 byte
isi file dapat dibaca dengan menggunakan editor
teks
isi file dapat dibaca dengan c:>TYPE namafile
BINARY FILE
menyimpan data numerik dalam format yang tetap
sesuai ketentuan micro-processor (misanya dengan
format sign-magnitude 2s complement), tidak
bergantung pada jumlah digit bilangan.
141
BUFFER AREA
Buffer area adalah bagian dari memori
yang digunakan sebagai tempat
penampungan sementara sebelum data
dipindahkan ke file.
Sintaks pembentukan buffer area
FILE *fp;
Dimana fp adalah variabel file pointer
yang digunakan untuk menunjuk awal
buffer area.
Dikenal juga dengan nama stream pointer.
142
MEMBUKA FILE
Untuk membuka file digunakan fungsi
fopen(), sintak sbb:
FILE *fopen( const char *filename, const char *mode
);
143
MEMBUKA FILE
Nilai mode operasi yang mungkin adalah
Mode Makna
r Membuka file utuk dibaca.
w Membentuk file baru untuk ditulisi.
a Membuka file untuk tambah data.
r+ Membuka file untuk dibaca/ditulisi.
w+ Membentuk file untuk dibaca/ditulisi.
a+ Membuka file untuk dibaca dan ditambah
isinya
rb Membuka file biner untuk dibaca
wb Membentuk file biner untuk ditulid
144
MENUTUP FILE
File ditutup dengan menggunakan fungsi fclose(),
sintak :
int fclose( FILE *stream );
145
MENUTUP FILE
Fungsi fcloseall() dengan sintak :
146
FUNGSI INPUT - OUTPUT
FILE
fgetc
Membaca satu karakter dari file
fgetc( stdin ) ekuivalen dengan getchar()
Sintak : int fgetc( FILE *stream );
Mengembalikan karakter yang dibaca jika sukses,
dan mengembalikan EOF jika error
fputc
Menulis satu karakter ke file
fputc( 'a', stdout ) ekuivalen dengan putchar( 'a' )
Sintak: int fputc( int c, FILE *stream );
Mengembalikan karakter yang ditulis jika sukses,
dan mengembalikan EOF jika error
147
FUNGSI INPUT - OUTPUT
FILE
fgets
Sintak: char *fgets( char *string, int n, FILE *stream );
Membaca satu baris dari file yang diakhiri dengan new
line, atau maximum n-1 karakter
Mengembalikan string jika sukses dan mengembalikan
NULL jika error
fputs
Menulis satu baris ke file
Sintak: int fputs( const char *string, FILE *stream );
Mengembalikan nilai non-negatif jika sukses, dan
mengembalikan EOF jika error
148
FUNGSI INPUT - OUTPUT
FILE
fscanf
Sintak: int fscanf( FILE *stream, const char *format [, argument
]... );
Membaca data dari file dengan format sesuai dengan format
scanf.
Mengembalikan nilai yang menyatakan jumlah field yang
sukses dibaca, dan mengembalikan EOF jika error
fprintf
Sintak: int fprintf( FILE *stream, const char *format [, argument
]...);
Menulis data ke file dengan format sesuai dengan format printf.
Mengembalikan nilai yang menyatakan jumlah byte yang
sukses ditulis, dan mengembalikan nilai negatif jika error
149
FUNGSI INPUT - OUTPUT
FILE
fwrite
Sintak: size_t fwrite( const void *buffer, size_t size, size_t count,
FILE *stream );
Menulis satu block data yg ada di buffer ke file
Mengembalikan jumlah byte data yang ditulis jika sukses, dan
error jika return value nya lebih kecil dari size data yang ditulis
fread
Sintak: size_t fread( void *buffer, size_t size, size_t count, FILE
*stream );
Membaca satu block data sebesar size dari file
feof
Sintak : int feof( FILE *stream );
Untuk ngetest apakah posisi pointer sudah di end-of-file
Mengembalikan 0 jika belum end-of-file
150
FUNGSI INPUT - OUTPUT
FILE
Contoh :
fwrite( &mhs, sizeof( mhs ), 1, fp );
151
FILE : CONTOH
CONTOH :
#include <stdio.h>
void main( void ) {
FILE *stream;
char *p, buffer[] = "This is the line of output\n";
int ch; ch = 0;
stream = stdout;
for( p = buffer; (ch != EOF) && (*p != '\0'); p++ )
ch = putc( *p, stream );
}
Output:
This is the line of output
152
FILE : CONTOH
Contoh program untuk membaca file fgetc.c
#include <stdio.h>
int main(void)
{
char ch; FILE *fp;
fp=fopen("fgetc.c","r");
if(fp==NULL){
printf("File fgetc.c tidak bisa dibuka\n"); exit(1);
}
while(!feof(fp)){
ch=fgetc(fp); printf("%c",ch);
}
fclose(fp);
return 0;
}
153
FILE : CONTOH
Contoh menulis string ke file test.txt dengan fputc
#include <stdio.h>
int main(void)
{
FILE *fp; int i;
char ss[80]="Kalimat ini disimpan ke file test.txt dengan fputc";
fp=fopen("test.txt","w");
if(fp==NULL){
printf("File test.txt tidak bisa create\n"); exit(1);
}
for(i=0; i<strlen(ss); i++) fputc(ss[i], fp);
fclose(fp);
return 0;
}
154
FILE : CONTOH
Contoh membaca file fgets.c dengan fgets
#include <stdio.h>
int main(void)
{
FILE *fp;
char ss[80];
fp=fopen("fgets.c","r");
if(fp==NULL){
printf("File fgets.c tidak bisa di open\n"); exit(1);
}
while(fgets(ss, 80, fp)) printf("%s",ss);
fclose(fp);
return 0;
}
155
FILE : CONTOH
Contoh menulis string ke file test.txt dengan fputs
#include <stdio.h>
int main(void)
{
FILE *fp;
char ss[80]="Kalimat ini ditulis ke file test.txt dengan fputs";
fp=fopen("test.txt","w");
if(fp==NULL){
printf("File test.txt tidak bisa di create\n");
exit(1);
}
fputs(ss, fp);
fclose(fp);
return 0;
}
156
FILE : CONTOH
Contoh menulis data ke file test.txt dengan fprintf
#include <stdio.h>
int main(void)
{
FILE *fp;
fp=fopen("test.txt","w");
if(fp==NULL){
printf("File test.txt tidak bisa di create\n");
exit(1);
}
fprintf(fp,"%d %s %f\n",1,Amir", 3.95);
fprintf(fp,"%d %s %f\n",2,Tono", 3.15);
fclose(fp);
return 0;
}
157
FILE : CONTOH
Contoh membaca data dari file test.txt dengan fscanf
#include <stdio.h>
int main(void)
{
FILE *fp; int no; char nama[20]; float ipk;
fp=fopen("test.txt","r");
if(fp==NULL){
printf("File test.txt tidak bisa di open\n"); exit(1);
}
fscanf(fp,"%d %s %f",&no,nama, &ipk);
printf("%d %s %f\n",no,nama,ipk);
fscanf(fp,"%d %s %f",&no,nama, &ipk);
printf("%d %s %f\n",no,nama,ipk);
fclose(fp); return 0;
}
158
FILE : CONTOH
Contoh menulis string ke file test.txt dengan fputc
#include <stdio.h>
int main(void)
{
FILE *fp; int i;
char ss[80]="Kalimat ini disimpan ke file test.txt dengan
fputc";
fp=fopen("test.txt","w");
if(fp==NULL){
printf("File test.txt tidak bisa create\n"); exit(1);
}
for(i=0; i<strlen(ss); i++) fputc(ss[i], fp);
fclose(fp);
return 0;
}
159