Az egyetemen ennek nagyon nagy hasznát vesszük programozás 1-ből, példa függvények, és használatuk. Sok sikert hozzá!
/* Ezt magam segítségére csináltam, de használjátok egészséggel mert
előfordulhatnak ezek és akkor legalább nem kell velük szarakodni, hanem
elég csak kimásolni. SteMa */
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
int i,o;
/* Szokásos getline, amit a lapon csak "szabvánbemenetként" említenek,
de nem tudni miért */
int getline(char s[],int lim)
{
int c,i;
for(i=0;i<lim&&(c=getchar())!=EOF&&c!='\n';++i)s[i]=c;
s[i]='\';
while(c!=EOF&&c!='\n')c=getchar();
return(i);
}
/* Visszaadja hány szó van az "s" sztringben, függetlenül attól,
hány szóköz sorváltás vagy tab válaszja el azokat */
int szsz(char s[])
{
int szavak=0,benn=0;
for(i=0;i<strlen(s);i++)
{
switch(s[i])
{
case ' ': case '\n': case '\t': {benn=0; break;}
default: if(benn==0) {benn=1; szavak++;}
}
}
return szavak;
}
/* Megadsz egy bemenet sztringet "si" és a kimenetbe "so",
az adott sorszámú szót rakja az első stringből. For ciklussal
az szsz-el kombinálva végig lehet haladni a szavakon így. */
void szo(char si[],char so[],int num)
{
int szavak=0,benn=0,kezd;
for(i=0;i<strlen(si);i++)
{
switch(si[i])
{
case ' ': case '\n': case '\t': {benn=0; break;}
default: if(benn==0)
{
benn=1;
szavak++;
if(szavak==num)
{
kezd=i;
do {so[i-kezd]=si[i];i++;} while(si[i]!=' '&&si[i]!='\t'&&si[i]!='\n');
}
}
}
}
}
/* karakter kisbetüssé alakítása, ékezetes karaktereké is
hogy sztringet alakíts át azon végig kell haladni:
for(i=0;i<strlen(sztring);i++) sztring[i]=lower(sztring[i]) */
int lower(int c)
{
if(c>='A'&&c<='Z') return(c+('a'-'A')); else
switch(c)
{
case'™':return '”';break;
case'š':return '�';break;
case'ŕ':return '˘';break;
case'Š':return '‹';break;
case'é':return 'Ł';break;
case'�':return '‚';break;
case'µ':return ' ';break;
case'ë':return 'ű';break;
case'Ö':return 'ˇ';break;
default: return(c);
}
}
/* karakter nagybetüssé alakítása, ékezetes karaktereké is
hogy sztringet alakíts át azon végig kell haladni:
for(i=0;i<strlen(sztring);i++) sztring[i]=upper(sztring[i]) */
int upper(int c)
{
if(c>='a'&&c<='z') return(c-('a'-'A')); else
switch(c)
{
case'”':return '™';break;
case'�':return 'š';break;
case'˘':return 'ŕ';break;
case'‹':return 'Š';break;
case'Ł':return 'é';break;
case'‚':return '�';break;
case' ':return 'µ';break;
case'ű':return 'ë';break;
case'ˇ':return 'Ö';break;
default: return(c);
}
}
/* megnézi, hogy "s" sztringben van-e "c" karakter, 1-et ad vissza
ha van, 0-t ha nincs */
int olyan(char c, char s[])
{
for(i=0;i<strlen(s);i++) if(c==s[i]) return 1;
return 0;
}
/* egy kis próba a dolgokra */
void main(void)
{
char str[128],str2[128];
getline(str,127);
printf("szavak száma: %d\n",szsz(str));
szo(str,str2,2);
for(i=0;i<strlen(str2);i++) str2[i]=upper(str2[i]);
printf("%s\n",str2);
/* megnézi, hogy abban, hogy "va.le" van-e pont, naná, hogy 1-el tér vissza */
printf("%d",olyan('.',"va.le"));
}