/* Author sorry =) ============================ 1. Liitmine 1 sekund 30 punkti Kirjutada programm, mis oskab t¨aisarve liita. Sisend. Tekstifaili liit.sis esimesel real on ¨ulesande pealkiri S (pikkusega kuni 50 m¨arki) ja teisel real kaks t¨uhikuga eraldatud t¨aisarvu A ja B (absoluutv¨a¨artusega kuni 10 000). V¨aljund. Tekstifaili liit.val ainsale reale v¨aljastada pealkiri S, koolon, t¨uhik ja sisendis antud arvude A ja B summa. */ #define MAX_TITLE_CHARS 51 #include int main() { FILE *sisend; if((sisend = fopen("liit.sis","r")) == NULL) { printf("Proovisin avada liit.sis'i kuid tekkis tõrge, katkestan\n"); return -1; } else { printf("Laen väärtusi sisend.txt'ist..\n"); char byte; int newLine = 0; char exrTitle[MAX_TITLE_CHARS]; int counter = 0; int errorCode = 0; int split = 0; // char exrNumbers[14]; while((byte = fgetc(sisend)) != EOF) { if(newLine == 0 && byte == '\n') { newLine = 1; exrTitle[counter] = '\0'; counter = 0; continue; } if(newLine == 0) { if(counter >= 50) { // Viimane byte peab olema NUL byte errorCode = 1; // Buffer overflow break; } exrTitle[counter++] = byte; } else { if(counter >= 13) { errorCode = 1; break; } if(byte == '\n') { exrNumbers[++counter] = '\0'; counter = 0; break; } exrNumbers[counter++] = byte; } } if(errorCode == 0) { signed long int x1, x2; sscanf(exrNumbers,"%ld %ld",&x1,&x2); signed long int result = x1+x2; FILE *valjund = fopen("liit.val","w"); if(valjund == NULL) printf("Väljund null!"); else { fprintf(valjund,"%s: %ld\r\n",exrTitle,result); fclose(valjund); fclose(sisend); } } else { printf("OVERFLOW ! Max Title Chars : 50 || Max Integers : 11 byte => xxxxx xxxxx"); } return 0; } }