GMgKe586q6suSQnyqZLlGCooeWM

Pages

Search

Showing posts with label C++. Show all posts
Showing posts with label C++. Show all posts

Monday, May 30, 2011

Function Pointer As Struct Member

Function pointer as struct member - with arguments:

#include <stdio.h>

struct aritmathic{
    int a;
    int b;
    int (*add)(int, int);
    int (*subtract)(int, int);
    int (*multiply)(int, int);
};

int Add(int a, int b){
    return (a+b);
}

int Subtract(int a, int b){
    return (a-b);
}

int Multiply(int a, int b){
    return (a*b);
}

int main(){

    struct aritmathic ar;
    ar.a = 4;
    ar.b = 5;

    ar.add = Add;
    ar.subtract = Subtract;
    ar.multiply = Multiply;

    int a = ar.add(ar.a, ar.b);
    int b = ar.subtract(ar.a, ar.b);
    int c = ar.multiply(ar.a, ar.b);   

    printf("%d\n%d\n%d", a, b, c);

    return 0;
}


Simpler version for above:
#include <stdio.h>

struct aritmathic{
    int a;
    int b;
    int (*add) (struct aritmathic*);
    int (*subtract) (struct aritmathic*);
    int (*multiply) (struct aritmathic*);
};

int Add(struct aritmathic* ar){
    return (ar->a + ar->b);
}

int Subtract(struct aritmathic* ar){
    return (ar->a - ar->b);
}

int Multiply(struct aritmathic* ar){
    return (ar->a * ar->b);
}

int main(){

    struct aritmathic ar;
    ar.a = 4;
    ar.b = 5;

    ar.add = Add;
    ar.subtract = Subtract;
    ar.multiply = Multiply;

    int a = ar.add(&ar);
    int b = ar.subtract(&ar);
    int c = ar.multiply(&ar);   

    printf("%d\n%d\n%d", a, b, c);

    return 0;
}

Share/Bookmark
Below is a simple example of function pointer as a member of struct:

#include <stdio.h>

struct data{
    void(*hello)();
};

void hello(){
    puts("Hello comes from C");
}

int main(){
    // the first way
    struct data d;
    d.hello = hello;
    d.hello();

    // the alternate way
    struct data dd;
    struct data* ptr = &dd;
    ptr->hello = *hello;
    ptr->hello();
  
    return 0;
}

Share/Bookmark

Wednesday, May 4, 2011

C - Define

#define MODULE_AUTHOR(auth) printf("Author: %s\n",auth)
#define MODULE_DESCRIPTION(desc) printf("Description: %s\n", desc)

MODULE_AUTHOR("Irfanudin Ridho");
MODULE_DESCRIPTION("File System");

Share/Bookmark

Tuesday, May 3, 2011

C - String Memory Handling

1. memcpy
char name[] = "lady gaga and barack obama";
char data[100];
memcpy(data, name, strlen(name)+1);
puts(data);

2. memset
char name[] = "lady gaga";
memset(name, '*', 5);
puts(name);

3. memmove
char name[] = "lady gaga and luna maya";
memmove(name+0, name+5, 4); // placed, starting, num
puts(name);
Share/Bookmark

C - Iterate Pointer Of Char

To iterate a pointer of char, it's just need like doing with custom looping
char *data = "lady gaga";
for(; *data!='\0'; data++){
    putchar(*data);
}

Or using this one:
while(*data != '\0'){
    putchar(*data);
    data++;
}
Share/Bookmark

C - Malloc And Calloc

When we use malloc? We use it when we have a pointer, and we want to initialize it.
char name[] = "lady gaga";
char *ptr;
ptr = (char*) malloc(sizeof(name) * sizeof(char))

And then it's okey to initialize it through assignment or strcpy
ptr = name;
or 
strcpy(ptr, name);

Calloc is same as malloc:
ptr = (char*) calloc(sizeof(name), sizeof(char))

When you need copy an array of char to an array of char, the one way is use strcpy function
char name[] = "Indonesia";
char data[100];
strcpy(data, name);

Share/Bookmark

Thursday, April 28, 2011

C - Default Function

#include <stdio.h>
#include <stdlib.h>

typedef struct{
    char *name;
    char *city;
    int age;
}data;

int addName(data *d){
    d->name = "lady gaga";

    return 0;
}

int addCity(data *d){
    d->city = "new york";

    return 0;
}

int addAge(data *d){
    d->age = 24;

    return 0;
}

int set_default(data *d){

    addName(d);
    addCity(d);
    addAge(d);

    return 0;
}

char* getName(data *d){
    return d->name;
}

char* getCity(data* d){
    return d->city;
}

int getAge(data* d){
    return d->age;
}

int changeName(data* d, const char* name){
    d->name = (char *)malloc(1*sizeof(char));
    strcpy(d->name, name);

    return 0;
}

int changeCity(data* d, const char* city){
    d->city = (char *) malloc(1*sizeof(char));
    strcpy(d->city, city);

    return 0;
}

int changeAge(data* d, int age){
    d->age = age;

    return 0;
}

int main(int c){
    system("color 5f");

    data* list;
    list = (data*) malloc(10*sizeof(data));

    set_default(list);



    printf("%s, %d of %s",getName(list), getAge(list), getCity(list));

    return 0;
}

Share/Bookmark

C - Member Using DMA

#include <stdio.h>
#include <stdlib.h>

typedef struct{
    char *name;
    char *city;
    int age;
}data;

int addName(data *d){
    d->name = "lady gaga";

    return 0;
}

int addCity(data *d){
    d->city = "new york";

    return 0;
}

int addAge(data *d){
    d->age = 24;

    return 0;
}

char* getName(data *d){
    return d->name;
}

char* getCity(data* d){
    return d->city;
}
int getAge(data* d){
    return d->age;
}

int changeName(data* d, const char* name){
    d->name = (char *)malloc(1*sizeof(char));
    strcpy(d->name, name);

    return 0;
}

int changeCity(data* d, const char* city){
    d->city = (char *) malloc(1*sizeof(char));
    strcpy(d->city, city);

    return 0;
}

int changeAge(data* d, int age){
    d->age = age;

    return 0;
}

int main(int c){
    system("color 5f");

    data* list;
    list = (data*) malloc(10*sizeof(data));

    addName(list);
    addCity(list);
    addAge(list);

    changeName(list, "Luna Maya");
    changeCity(list, "Denpasar");
    changeAge(list, 27);

    printf("%s, %d of %s",getName(list), getAge(list), getCity(list));

    return 0;
}

Share/Bookmark

C - Complete Pointer And Struct

#include <stdio.h>
#include <stdlib.h>

typedef struct{
    char *name;
    char *city;
    int age;
}data;
int addName(data *d){
    d->name = "lady gaga";

    return 0;
}
int addCity(data *d){
    d->city = "new york";

    return 0;
}
int addAge(data *d){
    d->age = 24;

    return 0;
}
char* getName(data *d){
    return d->name;
}
char* getCity(data* d){
    return d->city;
}
int getAge(data* d){
    return d->age;
}
int main(int c){
    system("color 5f");

    data* list;
    list = (data*) malloc(1*sizeof(data));
    addName(list);
    addCity(list);
    addAge(list);
    printf("%s, %d of %s",getName(list), getAge(list), getCity(list));

    return 0;
}

Share/Bookmark

C - Pointer Behind Struct

#include <stdio.h>
#include <stdlib.h>

typedef struct{
    char *name;
    char *city;
    int age;
}data;

int addName(data *d){
    d->name = "lady gaga";

    return 0;
}

int addCity(data *d){
    d->city = "new york";

    return 0;
}

int addAge(data *d){
    d->age = 24;

    return 0;
}

int main(int c){
    system("color 5f");

    data* list;
    list = (data*) malloc(1*sizeof(data));

    addName(list);
    addCity(list);
    addAge(list);

    printf("%s, %d of %s",list->name, list->age, list->city);

    return 0;
}

Share/Bookmark

C - The Reaon Behind Pointer

1. Pure of array
========================

#include <stdio.h>
#include <stdlib.h>

int setFirst(char n[]){

    n[0] = 'l';
    n[1] = 'a';
    n[2] = 'd';
    n[3] = 'y';

    return 0;
}

Share/Bookmark

Thursday, April 7, 2011

C - Function Call

Here's a way on how to call function like the most avaiable in many software, like PHP, Apache or other software that built by C:
#define PO_FUNC(bar) bar()
What that means is that whenever you want to call a function, you do it by
PO_FUNC(your_function_name)

Here's an example:
#include <stdio.h>
#define PO_FUNC(bar) bar()

void hello(){
    printf("Hello For All");
}

int main(int argc, char* argv[]){
    PO_FUNC(hello);    // This is the same case as hello()
    return 0;
}
Share/Bookmark

Monday, March 21, 2011

C - File I/O

The functions used:
For writing to a file
1. fprintf( file_pointer, string_format, argument_lists )
2. fputs( string_data, file_pointer )
3. fwrite
4. fputc( char, file_pointer )
5. putc( char, file_pointer )

For reading from a file, use:
1. fscanf ( file_pointer, string_format, argument_lists )
2. fread
3. fgetc( file_pointer ) : char
4. fgets( char_array, size, file_pointer )


FILE *input;
input = fopen("lola.txt","r");

char a;
while(a != EOF){
    a = fgetc(input);
    putchar(a);
}
fclose(input);
Share/Bookmark

C - Console I/O

The available for console I/O functions are:
General:
1. printf
2. scanf
Character:
3. putchar -> int putchar(char)
4. getchar -> char getchar()
String:
5. puts(char[])
6. gets(char[])

Example using putchar and getchar:
char a;
while(a != '.'){
    a = getchar();
    putchar(a);
}
Share/Bookmark

Wednesday, March 16, 2011

C - CMD Alternate Program

/**
 * This program is an alternatif for native cmd program in windows
 * But this version doesn't support for keeping the state.
 *
 * @author  : irfanudin ridho
 * @email   : irfan.ub@gmail.com
 * @version : 1.0
 * @date    : March 16, 2011
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "lola.h"

int main()
{
    system("color 2f");

    printf("Enter your command for cmd: ");

    // without malloc, the program will broke
    char *pause = malloc(sizeof(char));

    while(strcmp(pause,"exit") != 0){
        fflush(stdin);                  // free the buffer
        gets(pause);
        fflush(stdin);                  // free the buffer

        system(pause);
    }

    return 0;
}


Share/Bookmark

C - Using malloc

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define N 20

int main()
{
    system("color f0");

    printf("Enter your name: ");
    char *name = malloc(sizeof(char));
    fflush(stdin);                      // free the buffer
    gets(name);

    printf("Your age: ");
    int age;
    scanf("%d", &age);

    puts("");
    printf("Your data:\n");
    printf("Name: %s\n", name);
    printf("Age : %d\n", age);

    puts("");
    system("pause");

    return 0;
}

Share/Bookmark

C - Pointer For List

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define N 20

struct data{
    int age;
    struct data *nextAge;
};

int main()
{
    system("color 2f");

    struct data zero, satu, dua, tiga;
    zero.age = 24;
    satu.age = 27;
    dua.age = 32;
    tiga.age = 55;

    struct data* next, *current;

    zero.nextAge = &satu;
    satu.nextAge = &dua;
    dua.nextAge = &satu;
    tiga.nextAge = NULL;

    current = zero.nextAge;

    int i;
    for(i=0; i< 3; i++){
        printf("%d\n", (current-i)->age);
    }


    return 0;
}

Share/Bookmark

C - Pointer To Structure

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define N 20

struct data{
    int age;
    struct data *nextAge;
};

int main()
{
    system("color 2f");

    struct data zero, satu, dua, tiga;
    zero.age = 24;

    struct data* ptr;
    ptr = &zero;

    (*ptr).age = 24;

    printf("%d\n", zero.age);
    printf("%d\n", (*ptr).age);
    printf("%d\n", ptr->age);

    return 0;
}

Share/Bookmark

Tuesday, March 15, 2011

C - strncpy

/**
 * This copy n character of the string
 * strncpy(destination, source, n characters)
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define N 20

int main()
{
    system("color 2f");

    char *data = malloc(sizeof(char));
    strncpy(data,"Indonesia is full countries",10);
    puts(data);

    return 0;
}

Share/Bookmark

C - strcpy And malloc

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


#define N 20

int main()
{
    system("color 2f");

    char *data = malloc(sizeof(char));
    strcpy(data,"Successfull Compliance");
    puts(data);

    char msg[200];
    strcpy(msg, "Indonesia is a nice one");
    puts(msg);

    return 0;
}

Share/Bookmark