Navigationskarta Insitutitionen för Datavetenskap Umeå Universitet

Kodexempel F4

Först, en beskrivning av hur aritmetiska konverteringar fungerar i C.

 
int lintrend(int x[], y[])
{
	...

/*------------------------------- First block */
	for (i=0; i<10; i++) {
		...
	}

/*------------------------------- Second block */
	do {
		...
	} while (cflag);
	...
}

Ett exempel på hur kod inte ska indenteras:
begin
     form1.Gauge3.maxvalue:=(ss_end+1);
     filter:=(ss_end+1) div 10;
     ss_start := 0;
     ss_end := 0;
     ss_sum := 0;
     counter:=1;
     left := Low(arrej);
          if n < High(arrej) + 1 then
             right := n - 1
                   else right := High(arrej);

                        for i := left to right do begin
                           tmp_sum := 0;
                           {implementation för tidsmätare de 7 kommande raderna}
                            inc(counter,1);
                                 if form1.if_gauge.checked then
                                    if counter mod filter =0 then
                                       begin
                                            form1.Gauge3.progress:= counter;
                                            form1.update;
                                       end;

                                    for j:= i to right do begin
                                 Inc(tmp_sum,arrej[j]);
                            if tmp_sum > ss_sum then begin
                        ss_sum := tmp_sum;
                        ss_start := i;
                        ss_end := j
                   end; { if }
             end; { for j }
     end; { for i }
end; { procedure }

Denna OH visade jag inte.
#include <string.h>

int main(void)
{
	char s1[100] = "Ettan", s2[12] = "Tvåan", *p, *s="ABC";

	strcpy(s2, s1); /* s2 blir "Ettan" */
	strcat(s2, s1); /* s2 blir "EttanEttan" */
	strcat(s2, s1); /* FEL! s2 blir för lång */
	...
	strcpy(s1, "Ettan"); /* s1 blir "Ettan" */
	strcpy(s2, s1);      /* Dito för s2 */
	if (strcmp(s1, s2))
	...                  /* Körs om de är olika */
	strcpy(p, s1);       /* FEL! p är odefinierad */
	p=strdup(s1);        /* Detta är bättre */
	p=strchr(s1, "t");   /* p pekar på s1[1] */
	p=strstr(s1, "ta");  /* p pekar på s1[2] */
	*s='B';              /* FEL! (BBC eller krasch...) */
	...
}

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

int main(void)
{
	char s[100] = "33.5  \t  , ,  , 103.55    "
		", \t 57.2", 
		*p;

	p=strtok(s, " \t,");

	while (p) {
		puts(p);
		p=strtok(NULL, " \t,"));
	}
	return 0;
}

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

int main(void)
{
	char s[100], ans[100], *minus;

	... /* Read the string */
	minus=strchr(s, '-')+3;
	strcpy(ans, minus);
	*strchr(ans, '-')='\0';
	...
	/* Note: in real world, we would check */
	/* for NULL! */
}

int i=26; 
char c='A', s[]="klammer";
float pi=3.141;

printf("%c\n", c);        A
printf("!%x!\n", i);      !1a!
printf("!%d!\n", i);      !26!
printf("!%5d!\n", i);     !   26!
printf("!%-5d!\n", i);    !26   !
printf("!%3.5d!\n", i);   !00026!
printf("!%s!\n", s);      !klammer!
printf("!%10s!\n", s);    !   klammer!
printf("!%-10s!\n", s);   !klammer   !
printf("!%f!\n", pi);     !3.141000!
printf("!%5.2f!\n", pi);  ! 3.14!
printf("!%e!\n", pi);     !3.141000e+00!
printf("%p\n", s);        effffc70

Denna OH visade jag inte.
#include <stdio.h>

int write_int(int v[], int n)
{
	int i;
	FILE *ofp;

	if ( (ofp=fopen("ut.bin", "w")) == NULL)
		return -1;

	for (i=0; i<n; i++)
		if (fwrite(&v[i], sizeof(int), 1, ofp) == 0)
			return -1;
	fclose(ofp);

	return 0;
} /* (Could also be done with a single fwrite.) */

Denna OH visade jag inte.
#include <stdio.h>

int read_int(int v[], int n)
{
	int i;
	FILE *ifp;

	if ( (ifp=fopen("in.bin", "r")) == NULL)
		return -1;

	if (fread(v, sizeof(int), n, ifp) == 0)
		return -1;

	fclose(ifp);

	return 0;
}
[an error occurred while processing this directive]