Skip to content

Latest commit

 

History

History
 
 

L1

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Föreläsning 1

  • Bilder (pdf, publiceras 2015-08-31)

Utdelad kod

Hello, world

#include<stdio.h>

int main(int argc, char *argv[])
{
  puts("Hello, world!");
  return 0; 
}

Kompilera och kör så här: ($ är prompten)

$ gcc -o hello hello.c
$ ./hello
Hello, world!
$ _

Greeter

#include <stdio.h>

int main(int argc, char *argv[])
{
  if (argc < 2)
    {
      puts("Usage: ./greeter <name>");
    }
  else
    {
      printf("Hello, %s!\n", argv[1]);
    }
  return 0; 
}

Kompilera och kör så här: ($ är prompten)

$ gcc -o greeter greeter.c
$ ./greeter Tobias
Hello, Tobias!
$ _

Program som skriver ut en fil på skärmen

#include <stdio.h>

int main(int argc, char *argv[])
{
  if (argc < 2)
    {
      puts("Usage: ./mycat <name>");
    }
  else
    {
      FILE *f = fopen(argv[1], "r");
      int c = 0; 
      while ((c = fgetc(f)) != EOF)
	{
	  putchar(c);
	}
    }
  return 0; 
}

Kompilera och kör så här: ($ är prompten)

$ gcc -o mycat mycat.c 
$ ./mycat hello.c
#include<stdio.h>

int main(int argc, char *argv[])
{
  puts("Hello, world!");
  return 0; 
}
$_

Sök efter förekomster av strängar i en fil

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

int main(int argc, char *argv[])
{
  if (argc < 2)
    {
      puts("Usage: ./mygrep <pattern> <name>");
    }
  else
    {
      FILE *f = fopen(argv[2], "r");
      int str_len;
      size_t buf_siz = 0;
      char *string = NULL; 
      char *pattern = argv[1];
      
      while ((str_len = getline(&string, &buf_siz, f)) > 0)
	{
	  if (strnstr(string, pattern, str_len))
	    printf("%s", string);
	}

      fclose(f);
    }
  return 0; 
}

Kompilera och kör så här: ($ är prompten)

$ gcc -o mygrep grep.c
$ ./mygrep Hello hello.c

Nu skrivs alla rader ut i hello.c som innehåller texten "Hello".

Fibonacci

#include <stdio.h>

int main(int argc, char *argv[])
{
  int acc1, acc2, temp;

  acc1 = 0;
  acc2 = 1;
 
  const int n = 15; // <---- ÄNDRA DENNA RAD för att ändra vad programmet skall räkna ut

  for (int i = 0; i < n; ++i)
    {
      temp = acc2; 
      acc2 += acc1;
      acc1 = temp;
    }

  printf("fib(%d) = %d\n", n, acc1);

  return 0; 
}

Kompilera och kör så här: ($ är prompten)

$ gcc -std=c11 -o fib fib.c 
$ ./fib 
fib(15) = 610
$ _

Vad du kan göra själv