0% found this document useful (0 votes)
9 views6 pages

Cdpractical

The document contains several C program examples related to string processing and file handling: 1. The first program checks if a string contains a keyword by comparing it to an array of keywords using strcmp(). 2. The second program counts the number of keywords in a file by reading each word and comparing it to an array of keywords. 3. The third program counts the number of operators in a given input file. 4. The remaining programs provide examples of counting characters in a file, implementing a symbol table, using lex to process strings, and validating inputs like mobile numbers, identifiers, URLs and dates.

Uploaded by

Naman jain
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views6 pages

Cdpractical

The document contains several C program examples related to string processing and file handling: 1. The first program checks if a string contains a keyword by comparing it to an array of keywords using strcmp(). 2. The second program counts the number of keywords in a file by reading each word and comparing it to an array of keywords. 3. The third program counts the number of operators in a given input file. 4. The remaining programs provide examples of counting characters in a file, implementing a symbol table, using lex to process strings, and validating inputs like mobile numbers, identifiers, URLs and dates.

Uploaded by

Naman jain
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 6

WAP TO CHECK WHETHER A STRING CONTAINS KEYWORD OR NOT

#include <stdio.h>
#include <string.h>
int main() {
char keyword[32][10]={
"auto","double","int","struct","break","else","long",
"switch","case","enum","register","typedef","char",
"extern","return","union","const","float","short",
"unsigned","continue","for","signed","void","default",
"goto","sizeof","voltile","do","if","static","while"
} ;
char str[]="which";
int flag=0,i;
for(i = 0; i < 32; i++) {
if(strcmp(str,keyword[i])==0) {
flag=1;
}
}
if(flag==1)
printf("%s is a keyword",str);
else
printf("%s is not a keyword",str);
}
-----------------------------------------------------------------------------------
-
WAP TO COUNT TOTAL NUMBER OF KEYWORD IN A FILE
void main()
{
//2d array used to store the keywords but few of them are used.

char key[32][12]={"int","char","while","for","if","else"};

//cnt is used to count the occurrence of the keyword in the file.

int cnt=0,i;

//used to store the string that is read line by line.

char ch[100];

FILE *fp=fopen("key.c","r");

//to check whether file exists or not

if(fp=='\0')
{
printf("file not found..\n");
exit(0);
}
//to extract the word till it don't reach the end of file

while((fscanf(fp,"%s",ch))!=EOF)
{
//compare the keyword with the word present in the file.

for(i=0;i<32;i++)
{
// compare the keyword with the string in ch.
if(strcmp(key[i],ch)==0) {
//just to check which keyword is printed.
printf("\nkeyword is : %s",ch);
cnt++;
}
}
}
printf("\n Total no. of keywords are : %d", cnt);
fclose(fp);
}
----------------------------------------------------------------
WAP TO COUNT TOTAL NUMBER OF OPERATORS IN A GIVEN INPUT FILE
------------------------------------------------------------------
WAP TO COUNT TOTAL NO. OF CHARACTERS IN A FILE
// C Program to count
// the Number of Characters in a Text File

#include <stdio.h>
#define MAX_FILE_NAME 100

int main()
{
FILE* fp;

// Character counter (result)


int count = 0;

char filename[MAX_FILE_NAME];

// To store a character read from file


char c;

// Get file name from user.


// The file should be either in current folder
// or complete path should be provided
printf("Enter file name: ");
scanf("%s", filename);

// Open the file


fp = fopen(filename, "r");

// Check if file exists


if (fp == NULL) {
printf("Could not open file %s",
filename);
return 0;
}

// Extract characters from file


// and store in character c
for (c = getc(fp); c != EOF; c = getc(fp))

// Increment count for this character


count = count + 1;

// Close the file


fclose(fp);

// Print the count of characters


printf("The file %s has %d characters\n ",
filename, count);

return 0;
}
----------------------------------------------------------
WAP IN C TO INSERT,DELETE AND DISPLAY THE ENTRIES IN A SYMBOL TABLE
#include<stdio.h>
#include<conio.h>
#include<alloc.h>
#include<string.h>
#include<stdlib.h>
#define NULL 0
int size=0;
void Insert();
void Display();
void Delete();

struct SymbTab
{
char label[10],symbol[10];
int addr;
struct SymbTab *next;};
struct SymbTab *first,*last;
void main()
{
int op,y;
char la[10];
clrscr();
do
{
printf("\n\tSYMBOL TABLE IMPLEMENTATION\n");
printf("\n\t1.INSERT\n\t2.DISPLAY\n\t3.DELETE\n\t4.SEARCH\n");
printf("\n\tEnter your option : ");
scanf("%d",&op);
switch(op)
{
case 1:
Insert();
break;
case 2:
Display();
break;
case 3:
Delete();
break;
case 4:
exit(0);
}
}while(op<3);
getch();
}
void Insert()
{
int n;
char l[10];
printf("\n\tEnter the label : ");
scanf("%s",l);
n=Search(l);
if(n==1)
printf("\n\tThe label exists already in the symbol table\n\tDuplicate can't be
inserted");
else
{
struct SymbTab *p;
p=malloc(sizeof(struct SymbTab));
strcpy(p->label,l);
printf("\n\tEnter the symbol : ");
scanf("%s",p->symbol);
printf("\n\tEnter the address : ");
scanf("%d",&p->addr);
p->next=NULL;
if(size==0)
{
first=p;
last=p;
}
else
{
last->next=p;
last=p;
}
size++;
}
printf("\n\tLabel inserted\n");
}
void Display()
{
int i;
struct SymbTab *p;
p=first;
printf("\n\tLABEL\t\tSYMBOL\t\tADDRESS\n");
for(i=0;i<size;i++)
{
printf("\t%s\t\t%s\t\t%d\n",p->label,p->symbol,p->addr);
p=p->next;
}
}

void Delete()
{
int a;
char l[10];
struct SymbTab *p,*q;
p=first;
printf("\n\tEnter the label to be deleted : ");
scanf("%s",l);
a=Search(l);
if(a==0)
printf("\n\tLabel not found\n");
else
{
if(strcmp(first->label,l)==0)
first=first->next;
else if(strcmp(last->label,l)==0)
{
q=p->next;
while(strcmp(q->label,l)!=0)
{
p=p->next;
q=q->next;
}
p->next=NULL;
last=p;
}
else
{
q=p->next;
while(strcmp(q->label,l)!=0)
{
p=p->next;
q=q->next;
}
p->next=q->next;
}
size--;
printf("\n\tAfter Deletion:\n");
Display();
}
}
---------------------------------------------------------------
WAP A LEX PROGRAM TO COUNT NO. OF CHARACTERS IN A STRINGS
---------------------------------------------------------------
write a lex prog to validate a mobile number
/* Lex Program to check valid Mobile Number */

%{
/* Definition section */
%}

/* Rule Section */
%%

[1-9][0-9]{9} {printf("\nMobile Number Valid\n");}

.+ {printf("\nMobile Number Invalid\n");}

%%

// driver code
int main()
{
printf("\nEnter Mobile Number : ");
yylex();
printf("\n");
return 0;
}
----------------------------------------------------------------
write a lex prog to validate a idenfier
/*lex code to determine whether input is an identifier or not*/
% {
#include <stdio.h>
%
}

/ rule section % %
// regex for valid identifiers
^[a - z A - Z _][a - z A - Z 0 - 9 _] * printf("Valid Identifier");

// regex for invalid identifiers


^[^a - z A - Z _] printf("Invalid Identifier");
.;
% %

main()
{
yylex();
}
----------------------------------------------------------------
write a lex program to validate a url
%%
((http)|(ftp))s?:\/\/[a-zA-Z0-9]{2, }(\.[a-z]{2, })
+(\/[a-zA-Z0-9+=?]*)* {printf("\nURL Valid\n");}

.+ {printf("\nURL Invalid\n");}

%%

// driver program
void main()
{
printf("\nEnter URL : ");
yylex();
printf("\n");
}
--------------------------------------------------------------------------
write a lex program to validate a date
%{
#include<stdio.h>
int valid=0;
%}
%%
([0-2][0-9]|3[0-1])\/(0[1-9]|1[0-2])\/([1-2][0-9][0-9][0-9]) {valid=1;}
%%
main()
{
yyin=fopen("input.txt","r");
yylex();
if(valid==1) printf("It is a valid date\n");
else printf("It is not a valid date\n");
}
int yywrap()
{
return 1;
}
------------------------------------------------------------------------------

You might also like