From 258e1b92ebbfdebefabc120969ab87c3d8b75c3d Mon Sep 17 00:00:00 2001
From: Patrick Simianer 
Date: Sun, 15 Jun 2014 03:50:12 +0200
Subject: old c,cc examples
---
 c,cc/Makefile            |  17 ++++
 c,cc/animal.cc           |  37 +++++++++
 c,cc/bitwise.c           |  51 ++++++++++++
 c,cc/cast.cc             |  27 ++++++
 c,cc/cat_char.cc         |  16 ++++
 c,cc/class.cc            |  31 +++++++
 c,cc/class_member.cc     |  33 ++++++++
 c,cc/compression_test.cc |  45 ++++++++++
 c,cc/cond.h              |   9 ++
 c,cc/ctype.c             |  43 ++++++++++
 c,cc/double_pointer.c    |  35 ++++++++
 c,cc/filelib.c           |  87 ++++++++++++++++++++
 c,cc/filelib.h           |  25 ++++++
 c,cc/float_int.cc        |  26 ++++++
 c,cc/gz.c                |  16 ++++
 c,cc/in_out.c            |  14 ++++
 c,cc/matrix.cc           | 210 +++++++++++++++++++++++++++++++++++++++++++++++
 c,cc/ooc.c               |  78 ++++++++++++++++++
 c,cc/ooc.h               |   6 ++
 c,cc/pointers.c          |  46 +++++++++++
 c,cc/precedence.cc       |  16 ++++
 c,cc/scanf.c             |  17 ++++
 c,cc/snprintf.c          |  14 ++++
 c,cc/sort.cc             |  47 +++++++++++
 c,cc/split.cc            |  55 +++++++++++++
 c,cc/sscanf.c            |  17 ++++
 c,cc/stringstream.cc     |  26 ++++++
 c,cc/stringutil.c        |  22 +++++
 c,cc/stringutil.h        |  13 +++
 c,cc/stringutil_test.c   |  53 ++++++++++++
 c,cc/struct.c            |  20 +++++
 c,cc/substr.cc           |  23 ++++++
 c,cc/thread_test.c       |  43 ++++++++++
 c,cc/to_hex.cc           |  14 ++++
 c,cc/type_size.c         |  12 +++
 c,cc/vector_addition.c   |  29 +++++++
 c,cc/vector_addition.cu  |  61 ++++++++++++++
 c,cc/vector_addition1.cu |  48 +++++++++++
 38 files changed, 1382 insertions(+)
 create mode 100644 c,cc/Makefile
 create mode 100644 c,cc/animal.cc
 create mode 100644 c,cc/bitwise.c
 create mode 100644 c,cc/cast.cc
 create mode 100644 c,cc/cat_char.cc
 create mode 100644 c,cc/class.cc
 create mode 100644 c,cc/class_member.cc
 create mode 100644 c,cc/compression_test.cc
 create mode 100644 c,cc/cond.h
 create mode 100644 c,cc/ctype.c
 create mode 100644 c,cc/double_pointer.c
 create mode 100644 c,cc/filelib.c
 create mode 100644 c,cc/filelib.h
 create mode 100644 c,cc/float_int.cc
 create mode 100644 c,cc/gz.c
 create mode 100644 c,cc/in_out.c
 create mode 100644 c,cc/matrix.cc
 create mode 100644 c,cc/ooc.c
 create mode 100644 c,cc/ooc.h
 create mode 100644 c,cc/pointers.c
 create mode 100644 c,cc/precedence.cc
 create mode 100644 c,cc/scanf.c
 create mode 100644 c,cc/snprintf.c
 create mode 100644 c,cc/sort.cc
 create mode 100644 c,cc/split.cc
 create mode 100644 c,cc/sscanf.c
 create mode 100644 c,cc/stringstream.cc
 create mode 100644 c,cc/stringutil.c
 create mode 100644 c,cc/stringutil.h
 create mode 100644 c,cc/stringutil_test.c
 create mode 100644 c,cc/struct.c
 create mode 100644 c,cc/substr.cc
 create mode 100644 c,cc/thread_test.c
 create mode 100644 c,cc/to_hex.cc
 create mode 100644 c,cc/type_size.c
 create mode 100644 c,cc/vector_addition.c
 create mode 100644 c,cc/vector_addition.cu
 create mode 100644 c,cc/vector_addition1.cu
diff --git a/c,cc/Makefile b/c,cc/Makefile
new file mode 100644
index 0000000..64008d1
--- /dev/null
+++ b/c,cc/Makefile
@@ -0,0 +1,17 @@
+CFLAGS += -pedantic -Wall -std=c99
+
+compression_test: compression_test.cc
+	g++ compression_test.cc -lboost_filesystem -lboost_iostreams -o compression_test
+
+vector_addition: vector_addition.c
+	gcc -Os vector_addition.c -o vector_addition
+
+vector_addition_cuda: vector_addition.cu
+	nvcc vector_addition.cu -o vector_addition_cuda
+
+vector_addition_cuda1: vector_addition1.cu
+	nvcc vector_addition1.cu -o vector_addition_cuda1
+
+thread_test: thread_test.c
+	gcc thread_test.c -lpthread -o thread_test
+
diff --git a/c,cc/animal.cc b/c,cc/animal.cc
new file mode 100644
index 0000000..3bad1b1
--- /dev/null
+++ b/c,cc/animal.cc
@@ -0,0 +1,37 @@
+#include 
+
+using namespace std;
+
+
+class Animal
+{
+  public:
+    Animal() { // Konstruktor
+      cout << "Der Konstruktor wird aufgerufen." << endl;
+      m_alive = true;
+    }
+
+    ~Animal() {cout << "Der Destruktor wird aufgerufen." << endl;}
+
+    bool isAlive() { // Methode
+      return m_alive;
+    }
+
+    void kill() { // Methode
+      m_alive=false;
+    }
+
+  private:
+    bool m_alive; // Member-Variable
+};
+
+
+int main(void)
+{
+  int i;
+  bool alive;
+
+  Animal a; // Instanz von Animal
+  Animal b; // noch eine ^
+}
+
diff --git a/c,cc/bitwise.c b/c,cc/bitwise.c
new file mode 100644
index 0000000..c90bfbd
--- /dev/null
+++ b/c,cc/bitwise.c
@@ -0,0 +1,51 @@
+#include 
+
+
+void
+test1()
+{
+  int foo[4] = {147, 142, 207, 19};
+  unsigned long result = 0;
+
+  for( int i = 0; i < 4; i += 1 )
+  {
+    result = result<<8;  // 8 bit left
+    result = foo[i]|result;
+  }
+
+  printf("%lx\n", result);
+}
+
+void
+test2(void)
+{
+  int foo[4];
+  unsigned long bar = 0x938ecf13;
+
+  for( int i = 0; i < 4; i += 1 )
+  {
+    foo[i] = (bar>>i*8)&255;
+
+    printf("%d\n", foo[i]);
+  }
+}
+
+void
+test3(void)
+{
+  int s = 12;
+  unsigned long foo = 0xffffffff;
+
+  foo = foo<
+
+using namespace std;
+
+
+struct A {
+  virtual void p() { cout << "A" << endl; }
+  void q() { cout << "q" << endl; }
+};
+
+struct Ba : public A {
+  void p() { cout << "Ba" << endl; }
+};
+
+struct Bb : public A {
+  void p() { cout << "Bb" << endl; }
+};
+
+int main(void)
+{
+  A* x = new A;
+  x = dynamic_cast(new Ba);
+  cout << "-" << endl;
+  x->q();
+  x->p();
+}
+
diff --git a/c,cc/cat_char.cc b/c,cc/cat_char.cc
new file mode 100644
index 0000000..3daf564
--- /dev/null
+++ b/c,cc/cat_char.cc
@@ -0,0 +1,16 @@
+#include 
+#include 
+
+using namespace std;
+
+
+int main(void)
+{
+  char c[] = "c";
+  char x[1024];
+  string s("s");
+  strcpy(x, s.c_str());
+  strcat(x, c);
+  cout << x << endl;
+}
+
diff --git a/c,cc/class.cc b/c,cc/class.cc
new file mode 100644
index 0000000..b493b51
--- /dev/null
+++ b/c,cc/class.cc
@@ -0,0 +1,31 @@
+#include 
+
+using namespace std;
+
+
+class A {
+  public:
+    A(int a):_a(a) {}
+    int geta() {
+        return _a;
+    }
+    static int _b;
+  private:
+    int _a;
+};
+
+int A::_b = 0;
+
+int main(void){
+  A a(2);
+  A *b = new A(2);
+  cout << b->geta() << endl;
+  cout << b->_b << endl;
+  cout << a._b << endl;
+  A::_b = 42;
+  cout << b->geta() << endl;
+  cout << b->_b << endl;
+  cout << a._b << endl;
+  return 0;
+}
+
diff --git a/c,cc/class_member.cc b/c,cc/class_member.cc
new file mode 100644
index 0000000..f78ca64
--- /dev/null
+++ b/c,cc/class_member.cc
@@ -0,0 +1,33 @@
+#include 
+
+using namespace std;
+
+
+struct A
+{
+};
+
+struct B : public A
+{
+
+};
+
+struct C : public A
+{
+
+};
+
+struct D
+{
+  A* a;
+};
+
+int main(void)
+{
+  B b;
+  D d;
+  A a;
+
+  d.a = &b;
+}
+
diff --git a/c,cc/compression_test.cc b/c,cc/compression_test.cc
new file mode 100644
index 0000000..21bfafc
--- /dev/null
+++ b/c,cc/compression_test.cc
@@ -0,0 +1,45 @@
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+using namespace boost::iostreams;
+using namespace std;
+
+
+int main(void)
+{
+  //ofstream raw("out-raw");
+  filtering_ostream out_z;
+  out_z.push(gzip_compressor());
+  //out_gz.push(gzip_compressor());
+  out_z.push(file_sink("out-z", std::ios::binary));
+  //out_gz.push(file_sink("out-gz", std::ios::binary));
+  for (size_t i = 0; i < 10; i++) {
+    out_z << "line #" << i << endl;
+    //out_gz << "line #" << i << endl;
+    //out_bz << "line #" << i << endl;
+    //raw << "line #" << i << endl;
+  }
+  //    flush(out);
+  close(out_z);
+  //close(out_gz);
+  //close(out_bz);
+  //raw.close();
+
+  for (size_t i = 0; i < 5; i++) {
+    ifstream file("out-z", ios_base::in | ios_base::binary);
+    filtering_istream in;
+    in.push(gzip_decompressor());
+    in.push(file);
+    string s;
+    while (getline(in, s)) {
+      cout << s << endl;
+    }
+    file.close();
+  }
+}
+
diff --git a/c,cc/cond.h b/c,cc/cond.h
new file mode 100644
index 0000000..0d9e572
--- /dev/null
+++ b/c,cc/cond.h
@@ -0,0 +1,9 @@
+#ifndef _COND_H_
+#define _COND_H_
+
+
+#define cond(expr, a, b) (expr) ? (a) : (b)
+
+
+#endif /* _COND_H_ */
+
diff --git a/c,cc/ctype.c b/c,cc/ctype.c
new file mode 100644
index 0000000..0331566
--- /dev/null
+++ b/c,cc/ctype.c
@@ -0,0 +1,43 @@
+#include 
+#include 
+#include 
+
+
+int main(void)
+{
+  char *a="abc";
+  char *x="xyz";
+  char *b="abc";
+  char *y="Xyz";
+
+  int r;
+
+  if(isupper(y[0]))
+  {
+    printf("%c\n",y[0]);
+  }
+
+  if(r=(!strcmp(a,b)))
+  {
+    printf("%d\n",r);
+  }
+
+  printf("%c\n",*x);
+
+  if(r=(!strcmp(a,x)))
+  {
+    printf("%d\n",r);
+  }
+
+  char bla[4]="aAc";
+
+  for( unsigned int i = 0; i < 4; i += 1 )
+  {
+    if(isupper(bla[i])) {
+      printf("%c\n",bla[i]);
+    }
+  }
+
+  return 0;
+}
+
diff --git a/c,cc/double_pointer.c b/c,cc/double_pointer.c
new file mode 100644
index 0000000..1c66b9a
--- /dev/null
+++ b/c,cc/double_pointer.c
@@ -0,0 +1,35 @@
+#include 
+
+
+int main(void)
+{
+	char word[] = "abcdef";
+	
+	char *wp = word;
+	
+	printf("%s\n", wp);
+	
+	wp++;
+	
+	printf("%s\n",wp);
+	
+	wp++;
+	
+	printf("%s\n",wp);
+	
+	wp++;
+	
+	printf("%s\n",wp);
+	
+	wp++;
+	
+	printf("%s\n",wp);
+
+	wp++;
+	
+	printf("%s\n",wp);
+	
+	
+	return 0;
+}
+
diff --git a/c,cc/filelib.c b/c,cc/filelib.c
new file mode 100644
index 0000000..57a27c3
--- /dev/null
+++ b/c,cc/filelib.c
@@ -0,0 +1,87 @@
+#include "filelib.h"
+
+
+typedef struct
+{
+  hFile b_;
+  FILE* fp;
+} hFile_;
+
+typedef struct
+{
+  hFile b_;
+  gzFile* fp;
+} hgzFile;
+
+gzmode(const char* mode)
+{
+  // TODO
+  return true;
+}
+
+hgzFile*
+gzmakef(char* fname, const char* mode)
+{
+  hgzFile* hgz = malloc(sizeof(hgzFile));
+  hgz->b_.name = fname;
+  hgz->b_.gz = true;
+  gzFile* fp = malloc(sizeof(gzFile));
+  *fp = gzopen(fname, mode);
+  hgz->fp = fp;
+  return hgz;
+}
+
+hFile*
+makef(char* fname, const char* mode)
+{
+  if (endswith(fname, GZIP_EXT))
+    return gzmakef(fname, mode);
+  hFile_* f = malloc(sizeof(hFile_));
+  if (!f) return NULL;
+  f->b_.name = fname;
+  f->b_.gz = false;
+  if (!strcmp(fname, "-")) {
+    if (!strcmp(mode, "r") && !strcmp(mode, "r+")) f->fp = stdin;
+    else f->fp = stdout;
+  } else {
+    f->fp = fopen(fname, mode);
+  }
+  return f;
+}
+
+bool
+gzwriteln(const char* s, hFile* f)
+{
+  unsigned len = strlen(s);
+  gzwrite(*((hgzFile*)f)->fp, s, len);
+  gzwrite(*((hgzFile*)f)->fp, "\n", 1);
+  return gzflush(*((hgzFile*)f)->fp, Z_FINISH) == Z_OK;
+}
+
+bool
+writeln(const char* s, hFile* f)
+{
+  if (f->gz)
+    return gzwriteln(s, f);
+  return fputs(s, ((hFile_*)f)->fp)&&fputs("\n", ((hFile_*)f)->fp);
+}
+
+bool
+gzclosef(hFile* f)
+{
+  bool ret = gzclose(*((hgzFile*)f)->fp);
+  free(((hgzFile*)f)->fp);
+  free(f);
+  return ret;
+}
+
+bool
+closef(hFile* f)
+{
+  if (f->gz)
+    return gzclosef(f);
+  bool ret = fclose(((hFile_*)f)->fp);
+  free(f);
+  return ret;
+}
+
diff --git a/c,cc/filelib.h b/c,cc/filelib.h
new file mode 100644
index 0000000..587cddf
--- /dev/null
+++ b/c,cc/filelib.h
@@ -0,0 +1,25 @@
+#ifndef FILELIB_H
+#define FILELIB_H
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include "util.h"
+
+#define GZIP_EXT ".gz"
+
+
+typedef struct
+{
+  char* name; // relative
+  bool gz;
+} hFile;
+
+hFile* makef(char* fname, const char* mode);
+bool writeln(const char* s, hFile* f);
+
+
+#endif
+
diff --git a/c,cc/float_int.cc b/c,cc/float_int.cc
new file mode 100644
index 0000000..9d0ece4
--- /dev/null
+++ b/c,cc/float_int.cc
@@ -0,0 +1,26 @@
+#include 
+
+using namespace std;
+
+
+int main(void)
+{
+  int a = 1;
+  int b = 2;
+  double q = (double)a/b;
+  cout << q << endl;
+
+  cout << 1 - (float)a/b << endl;
+
+  float x = 0.1;
+  unsigned y = 105;
+  unsigned z = x*y;
+  cout << z << endl;
+
+  float u = -1;
+  if (u) cout << "XXXXXX" << endl;
+
+  float j = 0.0;
+  if (j) cout << "j" << endl;
+}
+
diff --git a/c,cc/gz.c b/c,cc/gz.c
new file mode 100644
index 0000000..a0dcd90
--- /dev/null
+++ b/c,cc/gz.c
@@ -0,0 +1,16 @@
+#include 
+#include 
+
+int
+main(void)
+{
+  gzFile gz = gzopen("asdf.gz", "wb");
+  int len = 0;
+  gzwrite(gz, "asdf\n", len);
+  char *s = "asdf\n";
+  gzwrite(gz, "asdf\n", strlen(s));
+  gzclose(gz);
+
+  return 0;
+}
+
diff --git a/c,cc/in_out.c b/c,cc/in_out.c
new file mode 100644
index 0000000..448eaa5
--- /dev/null
+++ b/c,cc/in_out.c
@@ -0,0 +1,14 @@
+#include 
+
+
+int main(void)
+{
+  int ch;
+
+  while ((ch=fgetc(stdin))!=EOF) {
+  	fputc(ch, stdout);
+  }
+  printf("\n");
+  return 0;
+}
+
diff --git a/c,cc/matrix.cc b/c,cc/matrix.cc
new file mode 100644
index 0000000..9d1a1c0
--- /dev/null
+++ b/c,cc/matrix.cc
@@ -0,0 +1,210 @@
+#include 
+#include 
+
+using namespace std;
+
+
+class MyMatrix
+{
+  public:
+    MyMatrix(int dimension);
+    MyMatrix(int rows, int columns);
+    ~MyMatrix();
+
+    void print();
+    int get_rows();
+    int get_columns();
+
+    double get_element(int row, int column);
+    void set_element(int row, int column, double value);
+
+    MyMatrix operator + (MyMatrix A);
+    MyMatrix operator * (MyMatrix A);
+    void operator = (MyMatrix A);
+
+
+  private:
+    double* m;
+    int row_d;
+    int col_d;
+    int d;
+};
+
+MyMatrix::MyMatrix(int dimension)
+{
+  row_d = dimension;
+  col_d = dimension;
+  d = dimension*dimension;
+  m = new double[d];
+
+  unsigned int k=0;
+  for(unsigned int i=0; i0) {
+    m[((row-1)*col_d)+(column-1)] = value;
+  }
+}
+
+
+MyMatrix
+MyMatrix::operator + (MyMatrix A)
+{
+  MyMatrix* res = new MyMatrix(row_d, col_d);
+
+  unsigned int k=0;
+  for(unsigned int i=0; im[k] = m[k]+A.get_element(i+1, j+1);
+      k++;
+    }
+  }
+
+  return *res;
+}
+
+MyMatrix MyMatrix::operator * (MyMatrix A)
+{
+  MyMatrix* res = new MyMatrix(row_d, col_d);
+
+  unsigned int k=0;
+  for(unsigned int i=0; im[k] = m[k]*A.get_element(i+1, j+1);
+      k++;
+    }
+  }
+
+  return *res;
+}
+
+void MyMatrix::operator = (MyMatrix A)
+{
+  unsigned int k=0;
+  for(unsigned int i=0; iprint();
+
+  cout << "   rows: " << m->get_rows() << ", ";
+  cout << "columns: " << m->get_columns() << endl;
+
+  delete m;
+
+
+  cout << endl << "2x5 matrix:" << endl;
+  MyMatrix n(2,5);
+  n.print();
+
+  cout << "   rows: " << n.get_rows() << ", ";
+  cout << "columns: " << n.get_columns() << endl;
+
+  cout << "(1,3) = " << n.get_element(1,3) << endl;
+
+  cout << "last: (2,5) = " << n.get_element(2,5) << endl;
+
+  cout << "second to last element = 100: " << endl;
+  n.set_element(2, 4, 100);
+  n.print();
+
+  cout << endl << "addition:" << endl;
+  cout << "matrix 1:" << endl;
+  MyMatrix* a1 = new MyMatrix(3,3);
+  a1->print();
+  cout << "matrix 2:" << endl;
+  MyMatrix* a2 = new MyMatrix(3,3);
+  a2->print();
+  cout << "result:" << endl;
+  MyMatrix* e1 = new MyMatrix(3,3);
+  *e1 = *a1+*a2;
+  e1->print();
+  delete e1;
+
+  cout << endl << "multiplication" << endl;
+  cout << "matrix 1:" << endl;
+  MyMatrix* m1 = new MyMatrix(3,3);
+  a1->print();
+  cout << "matrix 2:" << endl;
+  MyMatrix* m2 = new MyMatrix(3,3);
+  m2->print();
+  cout << "result:" << endl;
+  MyMatrix* e2 = new MyMatrix(3,3);
+  *e2 = *m1 * *m2;
+  e2->print();
+  delete e2;
+
+  return 0;
+}
+
diff --git a/c,cc/ooc.c b/c,cc/ooc.c
new file mode 100644
index 0000000..aa20488
--- /dev/null
+++ b/c,cc/ooc.c
@@ -0,0 +1,78 @@
+#include "ooc.h"
+#include "stdio.h"
+#include "string.h"
+
+
+struct van {
+       struct vehicle base;
+          int cubic_size;
+};
+
+struct bus {
+    struct vehicle base;
+       int seats;
+};
+
+struct van*
+make_van()
+{
+  struct van* v = malloc(sizeof(struct van));
+  v->base.type = "van";
+  v->cubic_size = 12;
+  return v;
+}
+
+struct bus*
+make_bus()
+{
+  struct bus* v = malloc(sizeof(struct bus));
+  v->base.type = "bus";
+  v->seats=112;
+  return v;
+}
+
+struct vehicle*
+make_vehicle(const char* type)
+{
+  if(!strcmp(type, "van")) return make_van();
+  if(!strcmp(type, "bus")) return make_bus();
+  return NULL;
+}
+
+void
+do_something_with_a_bus(struct vehicle* v)
+{
+  ((struct bus*)v)->seats = 13;
+}
+
+void
+do_something_with_a_van(struct vehicle* v)
+{
+  ((struct van*)v)->cubic_size = 11;
+}
+
+void
+do_something(struct vehicle* v)
+{
+  if(!strcmp(v->type, "van")) return do_something_with_a_van(v);
+  if(!strcmp(v->type, "bus")) return do_something_with_a_bus(v);
+}
+
+int
+main(void) {
+  struct van my_van;
+  struct vehicle *something = &my_van;
+  my_van.cubic_size = 100;
+  my_van.base.power = 99;
+  printf("%d\n", something->power);
+  printf("%d\n", my_van.base.power);
+
+  struct bus* bus = make_vehicle("bus");
+  printf("%s\n", bus->base.type);
+  printf("%d\n", bus->seats);
+  do_something(bus);
+  printf("%d\n", bus->seats);
+ 
+  return 0;
+}
+
diff --git a/c,cc/ooc.h b/c,cc/ooc.h
new file mode 100644
index 0000000..0585d95
--- /dev/null
+++ b/c,cc/ooc.h
@@ -0,0 +1,6 @@
+struct vehicle {
+       int power;
+       int weight;
+       char* type;
+};
+
diff --git a/c,cc/pointers.c b/c,cc/pointers.c
new file mode 100644
index 0000000..1efc25e
--- /dev/null
+++ b/c,cc/pointers.c
@@ -0,0 +1,46 @@
+#include 
+
+
+void
+test1(void)
+{
+	char *sp;
+	char s[] = "str";
+	sp = s;
+	printf("sp: %s\n", sp);
+	printf("s: %s\n", s);
+
+	int a = 513;
+	int *ap = &a;
+	int **app = ≈
+	printf("a: %d\n", a);
+	printf("ap: %d\n", *ap);
+	printf("app: %d\n", **app);
+}
+
+void
+test2()
+{
+	char *str = "abc";
+	
+	printf("for:\n");
+	for (unsigned int i = 0; i < 3; i += 1)
+	{
+		printf("%c\n", str[i]);
+	}
+	
+	printf("---\nwhile:\n");
+	while(*str)	{
+		printf("%c\n", *str++);
+	}
+	
+}
+
+int main(void)
+{
+  test1();
+  test2();
+
+	return 0;
+}
+
diff --git a/c,cc/precedence.cc b/c,cc/precedence.cc
new file mode 100644
index 0000000..08e29b6
--- /dev/null
+++ b/c,cc/precedence.cc
@@ -0,0 +1,16 @@
+#include 
+
+using namespace std;
+
+
+int main(void)
+{
+  bool a = false;
+  bool b = true;
+
+  cout << (!a && b) << endl;
+
+  double c = 0;
+  if (c) cout << "xx" << endl;
+}
+
diff --git a/c,cc/scanf.c b/c,cc/scanf.c
new file mode 100644
index 0000000..21dda28
--- /dev/null
+++ b/c,cc/scanf.c
@@ -0,0 +1,17 @@
+#include 
+
+
+int main (void)
+{
+  char str[80];
+  int res;
+ 
+  res = scanf(" %s", str);
+  printf("%d %s\n", res , str);
+  res = scanf("%s ", str);
+  printf("%d %s", res, str);
+  res = scanf(" %s", str);
+  printf("%d %s\n", res, str);
+  return 0;
+}
+
diff --git a/c,cc/snprintf.c b/c,cc/snprintf.c
new file mode 100644
index 0000000..a2cf1c2
--- /dev/null
+++ b/c,cc/snprintf.c
@@ -0,0 +1,14 @@
+#include 
+
+
+int main(void)
+{
+  int foo[4] = {192, 168, 1, 1};
+  char bla[20];
+
+  snprintf(bla, 19, "%d.%d.%d.%d", foo[0], foo[1], foo[2], foo[3]);
+
+  printf("%s\n", bla);
+
+  return 0;
+}
diff --git a/c,cc/sort.cc b/c,cc/sort.cc
new file mode 100644
index 0000000..165b086
--- /dev/null
+++ b/c,cc/sort.cc
@@ -0,0 +1,47 @@
+#include 
+#include 
+#include 
+#include 
+
+using namespace std;
+
+
+struct X
+{
+  pair p;
+};
+
+bool myf(X a, X b)
+{
+  return a.p.second > b.p.second;
+}
+
+int main(void)
+{
+  X a;
+  a.p.first = "a";
+  a.p.second = 1;
+
+  X b;
+  b.p.first = "b";
+  b.p.second = 2;
+
+  X c;
+  c.p.first = "c";
+  c.p.second = 3;
+
+  vector v;
+  v.push_back(a);
+  v.push_back(b);
+  v.push_back(c);
+
+  for (unsigned i = 0; i < v.size(); i++) {
+    cout << v[i].p.first << endl;
+  }
+  sort(v.begin(), v.end(), myf);
+  cout << endl;
+  for (unsigned i = 0; i < v.size(); i++) {
+    cout << v[i].p.first << endl;
+  }
+}
+
diff --git a/c,cc/split.cc b/c,cc/split.cc
new file mode 100644
index 0000000..e01ad64
--- /dev/null
+++ b/c,cc/split.cc
@@ -0,0 +1,55 @@
+#include 
+#include 
+#include 
+#include 
+
+using namespace std;
+
+
+int main(void)
+{
+  string s("a\tb\tc\td");
+  string::iterator it = s.begin();
+  char d = '\t';
+  string tmp;
+  size_t parts = 4;
+  size_t c = 0;
+  while(true) {
+    if (parts > 0 && c == parts-1) {
+      while(it != s.end()) {
+        tmp += *it;
+        it++;
+      }
+      cout << tmp << endl;
+      break;
+    }
+    if (it == s.end())  { cout << tmp << endl; break; }
+    if (*it != d) tmp += *it;
+    else {
+        cout << tmp << endl;
+        tmp.clear();
+        c++;
+    }
+    it++;
+  }
+
+  cout << "---" << endl;
+
+  stringstream ss(s);
+  string si;
+  parts = 0;
+  c = 0;
+
+  while(true)
+  {
+    if (parts > 0 && c == parts-1) {
+      getline(ss, si);
+      cout << si << endl;
+      break;
+    }
+    if(!getline(ss, si, '\t')) break;
+    cout << si << endl;
+    c++;
+  }
+}
+
diff --git a/c,cc/sscanf.c b/c,cc/sscanf.c
new file mode 100644
index 0000000..221852e
--- /dev/null
+++ b/c,cc/sscanf.c
@@ -0,0 +1,17 @@
+#include 
+
+
+int main(void)
+{
+  char ip[15] = {"192.168.100.100"};
+  int retval, val0, val1, val2, val3;
+
+  if(4!=(retval=sscanf(ip, "%d.%d.%d.%d", &val0, &val1, &val2, &val3))) {
+    printf("Error: sscanf failed, retval was: %d\n", retval);
+  }
+  else {
+    printf("%d\n%d\n%d\n%d\n", val0, val1, val2, val3);
+  }
+
+  return 0;
+}
diff --git a/c,cc/stringstream.cc b/c,cc/stringstream.cc
new file mode 100644
index 0000000..3d68db3
--- /dev/null
+++ b/c,cc/stringstream.cc
@@ -0,0 +1,26 @@
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+using namespace std;
+
+
+int main(void) {
+  string s = "1 2 3 4";
+  int i;
+  vector j;
+  stringstream ss(s);
+  while (ss >> i) {
+    j.push_back(i);
+    cout << i << endl;
+  }
+
+  printf("%4d %4d %4d %4d\n", j[0], j[1], j[2], j[3]);
+
+  cout.width(100);
+  cout << setw(100) << j.size() << endl;
+}
+
diff --git a/c,cc/stringutil.c b/c,cc/stringutil.c
new file mode 100644
index 0000000..aab4f03
--- /dev/null
+++ b/c,cc/stringutil.c
@@ -0,0 +1,22 @@
+#include "stringutil.h"
+
+
+char*
+strend(char* s)
+{
+  if (strlen(s) == 0) return '\0';
+  while(*s != '\0')
+    ++s;
+  return --s;
+}
+
+bool
+endswith(char* s, char* suff)
+{
+  if (strlen(s) < strlen(suff)) return false;
+  char* a = strend(s)-(strlen(suff)-1);
+  if (!a) return false;
+  if (!strcmp(a, suff)) return true;
+  return false;
+}
+
diff --git a/c,cc/stringutil.h b/c,cc/stringutil.h
new file mode 100644
index 0000000..153068a
--- /dev/null
+++ b/c,cc/stringutil.h
@@ -0,0 +1,13 @@
+#ifndef STRINGUTIL_H
+#define STRINGUTIL_H
+
+#include 
+#include 
+
+
+char* strend(char* s);
+bool endswith(char* s, char* suff);
+
+
+#endif
+
diff --git a/c,cc/stringutil_test.c b/c,cc/stringutil_test.c
new file mode 100644
index 0000000..798bccd
--- /dev/null
+++ b/c,cc/stringutil_test.c
@@ -0,0 +1,53 @@
+#include "filelib.h"
+#include "stringutil.h"
+
+
+int
+main(void)
+{
+  /*
+   * strend
+   *
+   */
+  char* s= "";
+  char* end = strend(s);
+  if (end)
+    printf("should not output: %s\n", end);
+
+  s = "asdf.gz";
+  end = strend(s);
+  if (end)
+    printf("expect 'z': %s\n", end);
+
+  /*
+   * endswith
+   *
+   */
+  if (endswith(s, ".gz"))
+    printf("%s ends with %s\n", s, ".gz");
+
+  if (endswith(".gz", ".gz"))
+    printf(".gz ends with .gz\n");
+
+  if(!endswith("gz", ".gz"))
+    printf("gz does not end with .gz\n");
+
+  /*
+   * filelib
+   *
+   */
+  hFile* f = makef("-", "a");
+  if (!f)
+    printf("Error creating file '%s'\n", "-");
+  writeln("this goes to stdout", f);
+  closef(f);
+
+  hFile* g = makef("gzfile.gz", "a");
+  if (!g)
+    printf("Error creating file '%s'\n", "-");
+  writeln("this should be compressed", g);
+  closef(g);
+
+  return 0;
+}
+
diff --git a/c,cc/struct.c b/c,cc/struct.c
new file mode 100644
index 0000000..4111526
--- /dev/null
+++ b/c,cc/struct.c
@@ -0,0 +1,20 @@
+#include 
+
+
+struct bla {
+  int a, b;
+};
+
+int main(void)
+{
+  struct bla test, *ptest;
+  ptest = &test;
+
+  ptest->a = 3;
+  ptest->b = 5;
+
+  printf("%d-%d\n", ptest->a, ptest->b);
+
+  return 0;
+}
+
diff --git a/c,cc/substr.cc b/c,cc/substr.cc
new file mode 100644
index 0000000..9a91adc
--- /dev/null
+++ b/c,cc/substr.cc
@@ -0,0 +1,23 @@
+#include 
+#include 
+
+using namespace std;
+
+
+int main(void)
+{
+  //        0 12 34 56
+  string s("aaax\tbx\tcxasd\tdx");
+  unsigned f = 0;
+  for(unsigned i = 0; i < 3; i++) {
+    unsigned e = f;
+    f = s.find("\t", f+1);
+    cout << "e:" << e << " f:" << f << endl;
+    if (e !=0) cout << "'" << s.substr(e+1, f-e-1) << "'" << endl;
+    else cout << "'" << s.substr(0, f) << "'" << endl;
+  }
+  cout << "---" << endl;
+  s.erase(0, f+1);
+  cout << "'" << s << "'" <
+#include 
+#include 
+
+
+void saying_pthread_name(void* ptr);
+int value=1;
+
+int
+main(void)
+{
+  pthread_t wthread, bthread, rthread;
+  char* wname = "white";
+  char* bname = "black";
+  char* rname = "red";
+  pthread_attr_t* pthread_attr_default = NULL;
+
+  pthread_create(&wthread, pthread_attr_default,
+      (void*)&saying_pthread_name, (void*) wname);
+
+  pthread_create(&bthread, pthread_attr_default,
+     (void*)&saying_pthread_name, (void*) bname);
+
+  pthread_create(&rthread, pthread_attr_default,
+     (void*)&saying_pthread_name, (void*) rname);
+
+  pthread_join(wthread,NULL);
+  //printf("%d\n", value);
+  pthread_join(rthread,NULL);
+  pthread_join(bthread,NULL);
+
+  exit(0);
+}
+
+void
+saying_pthread_name(void* ptr)
+{
+  char* message;
+  message = (char*)ptr;
+  printf("I am a %s pthread and the value is %d \n", message, value);
+  value = value+1;
+}
+
diff --git a/c,cc/to_hex.cc b/c,cc/to_hex.cc
new file mode 100644
index 0000000..6e577dc
--- /dev/null
+++ b/c,cc/to_hex.cc
@@ -0,0 +1,14 @@
+#include 
+
+using namespace std;
+
+
+int main(void)
+{
+  int r = 116;
+  int g = 10;
+  int b = 10;
+
+  cout << hex << r << " " << g << " " << b << endl;
+}
+
diff --git a/c,cc/type_size.c b/c,cc/type_size.c
new file mode 100644
index 0000000..18edb1f
--- /dev/null
+++ b/c,cc/type_size.c
@@ -0,0 +1,12 @@
+#include 
+
+
+int main(void)
+{
+  printf("char: %d\n", sizeof(char));
+  printf("int: %d\n", sizeof(int));
+  printf("float: %d\n", sizeof(float));
+  printf("double: %d\n", sizeof(double));
+  return 0;
+}
+
diff --git a/c,cc/vector_addition.c b/c,cc/vector_addition.c
new file mode 100644
index 0000000..decb3ff
--- /dev/null
+++ b/c,cc/vector_addition.c
@@ -0,0 +1,29 @@
+#include "stdio.h"
+#include "stdlib.h"
+
+
+int main(void) {
+  int N = 10000, M=100000;
+  float **x = malloc(N*sizeof(float*));
+  float *y = malloc(M*sizeof(float*));
+  int i,j;
+  for (i = 0; i < N; i++) {
+    x[i] = malloc(M*sizeof(float));
+    for (j = 0; j < M; j++) {
+      x[i][j] = (float) j;
+    }
+  }
+
+  for (i = 0; i < N ; i++) {
+    for (j = 0; j < M; j++) {
+      y[i] += x[i][j];
+    }
+  }
+
+  printf("%f\n", y[100]);
+
+  free(x); free(y);
+
+  return 0;
+}
+
diff --git a/c,cc/vector_addition.cu b/c,cc/vector_addition.cu
new file mode 100644
index 0000000..4f16bc3
--- /dev/null
+++ b/c,cc/vector_addition.cu
@@ -0,0 +1,61 @@
+#include "stdio.h"
+
+
+__global__ void add_arrays_gpu( float *in1, float *in2, float *out, int Ntot)
+{
+  int idx=blockIdx.x*blockDim.x+threadIdx.x;
+  if (idx < Ntot)
+    out[idx]=in1[idx]+in2[idx];
+}
+
+
+int main(void)
+{
+  /* pointers to host memory */
+  float *a, *b, *c;
+  /* pointers to device memory */
+  float *a_d, *b_d, *c_d;
+  int N=100000000;
+  int i;
+
+  /* Allocate arrays a, b and c on host*/
+  a = (float*) malloc(N*sizeof(float));
+  b = (float*) malloc(N*sizeof(float));
+  c = (float*) malloc(N*sizeof(float));
+
+  /* Allocate arrays a_d, b_d and c_d on device*/
+  cudaMalloc ((void **) &a_d, sizeof(float)*N);
+  cudaMalloc ((void **) &b_d, sizeof(float)*N);
+  cudaMalloc ((void **) &c_d, sizeof(float)*N);
+
+  /* Initialize arrays a and b */
+  for (i=0; i>>(a_d, b_d, c_d, N);
+
+  /* Copy data from deveice memory to host memory */
+  //cudaMemcpy(c, c_d, sizeof(float)*N, cudaMemcpyDeviceToHost);
+
+  /* Print c */
+/*for(i=0; i>>(a_d, b_d, c_d, N);
+
+  /* Copy data from deveice memory to host memory */
+  //cudaMemcpy(c, c_d, sizeof(float)*N, cudaMemcpyDeviceToHost);
+
+  /* Print c */
+/*for(i=0; i