C azonosítók
Írjon függvényt, amely a paramétereként megkapott tetszőleges hosszúságú
sztringről eldönti, hogy az a C/C++ nyelvek azonosítókra vonatkozó
elnevezési konvencióinak megfelel-e! Ha igen, akkor a függvény igaz
értéket, ha nem, hamisat adjon vissza! A C/C++ nyelvekben az elnevezési
konvenciók szerint az azonosítókban csak kisbetűket használnak, a
többszavas azonosítókban pedig a szavakat az aláhúzás ('_') karakterrel
választják el egymástól. Példa C/C++ azonosítókra: i
,
long_and_mnemonic_identifier
.
A függvény specifikációja
int is_c_identifier( char * );
Megjegyzés
A függvényt helyezze az identifier.c
nevű állományba, és ezt az állományt küldje
be megoldásként a kiértékelő rendszernek! Megoldását a példa bemenetben szereplő adatokkal az
alábbi két állomány segítségével tesztelheti. Megoldásának kiértékelését a tesztelő rendszer
nem feltétlenül ezeknek az állományoknak a felhasználásával végzi!
main.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
char line[ 50 ];
int is_c_identifier( char * );
while ( gets( line ) != NULL )
if ( is_c_identifier( line ) )
puts( "YES" );
else
puts( "NO" );
return EXIT_SUCCESS;
}
letöltés szöveges állományként
Makefile
CC = gcc
OBJS = main.o identifier.o
TARGETS = main
all: $(TARGETS)
main: main.o identifier.o
$(CC) main.o identifier.o -o main
main.o: main.c
$(CC) -c main.c
identifier.o: identifier.c
$(CC) -c identifier.c
clean:
rm -rf $(OBJS) *~ $(TARGETS)
letöltés szöveges állományként
Példa bemenet
i
long_and_mnemonic_identifier
it_contains_1number
it_contains_CapitalLetters
dot.is_not_accepted
thisiscorrectalthoughthewordsarenotseparated
_
_foo
foo_
_foo_
foo_bar
foo__bar
letöltés szöveges állományként
A példa bemenethez tartozó kimenet
YES
YES
NO
NO
NO
YES
NO
NO
NO
NO
NO
YES
NO
letöltés szöveges állományként