Nie spotkalem sie nigdzie z watkiem jak to napisac w czystym C. Odpowiedz jest dobra, po prostu mam zbyt dlugi czas wykonania. Głowię się nad takim zadaniem ze SPOJ:
Tresc: Często się zdarza, że pisząc stronę internetową piszemy tagi HTMLowe w postaci dużych, a czasami małych liter. Powoduje, że kod strony wygląda nieestetycznie. Twoim zadanie jest napisanie programu, który przerobi wszystkie tagi HTMLowe na duże litery, tzn, wszystkie litery pomiędzy znakami "<" a ">" zamieni na duże litery.
Input - Na wejściu znajduje się fragment kodu HTMLowego.
Output - Na wyjściu znajduje się kod HTML z wejścia, tyle tylko, że wszystkie tagi HTMLowe składają się z dużych liter.
Input:
<html>
<head>
<TITLE>To jest tytul</Title>
</head>
<body>
<b>Cos tam</b>
</body>
</html>
Output:
<HTML>
<HEAD>
<TITLE>To jest tytul</TITLE>
</HEAD>
<BODY>
<B>Cos tam</B>
</BODY>
</HTML>
Moj kod:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i, MAX = 60;
char line[MAX];
char sign = 'a'; //'a' - wlaczony tryb poprawy liter, 'b' - wylaczony
fgets(line,MAX,stdin); // wczytywanie linii z stdin
while(line[0] != '\n') // Dopoki nie bedzie pustej linii
{
i = 0;
while(i < strlen(line))
{
if (line[i]=='<')
{
sign = 'b';
++i;
}
else if(line[i]=='>')
{
sign = 'a';
++i;
}
else if(sign=='b' && line[i]>='a' && line[i]<='z')
{
line[i] -= 32;
++i;
}
else
{
++i;
}
}
line[ strlen(line) - 1 ] = '\0';
printf("%s\n", line);
fgets(line,MAX,stdin);
}
return 0;
}