Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
92<br />
6 <strong>Unit</strong>-<strong>Tests</strong><br />
/*******************************************************/<br />
void file_sqrt()<br />
/* aus dem Flashspeicher mit ASCII-Zeilen werden jene gelesen, <br />
* die nur aus einem int-Zahlenwert >= 0 bestehen; für diese<br />
* Zahlen wird die Quadratwurzel gebildet und das Ergebnis <br />
* in Datei out.txt geschrieben.<br />
* Die Eingangsdatei darf keine Zeilen länger als 79 Zeichen haben. <br />
* Zahlen, die größer als der größte darstellbare <br />
* vorzeichenbehaftete int-Wert sind, werden ignoriert.<br />
* Ist der Flashzugriff nicht möglich, bleibt<br />
* out.txt unverändert.<br />
*******************************************************/<br />
{<br />
int nIn = flash_open();<br />
if (NULL != nIn)<br />
{<br />
char szString[80];<br />
int iInput;<br />
FILE *nOut = fopen("out.txt", "w+");<br />
while (flash_gets(szString, sizeof(szString), nIn))<br />
{<br />
unsigned i;<br />
bool bNumber = true;<br />
for(i = 0; i < strlen(szString) - 1; i++)<br />
{<br />
if (!isdigit(szString[i])) bNumber = false;<br />
}<br />
if (!bNumber) continue; /* Zeile ignorieren */<br />
/* negative Zahlen und Kommazahlen schaffen es<br />
* nicht bis hierher, weil Minus und das Komma<br />
* isdigit() == 0 liefern */<br />
if (sscanf(szString,"%i\n", &iInput))<br />
{<br />
/* wenn es klappt auf int zu konvertieren */<br />
fprintf(nOut, "%d\n",<br />
(int) sqrt((float)iInput));<br />
}<br />
else<br />
{<br />
/* Überlauf wird ignoriert */<br />
}<br />
}<br />
}<br />
Listing 6–2<br />
} /* while */<br />
fclose(nOut);<br />
(void) flash_close(nIn);<br />
Die zu testende Datei – Testobjekt.c – besteht aus einer einzigen Funktion.