Write a C program which reads the standard input and extract HTML- style tags fr
ID: 3930745 • Letter: W
Question
Write a C program which reads the standard input and extract HTML-style tags from it. We consider that the HTML-style tags are all strings starting with character “less-than” (<) and end with the character “greater-than” (>). In case that there is a tag starting with ‘<’ but not finishing with ‘>’ at all, then print it all the way to the end of input. Each tag should start at a new line. Input The input is in a free textual form. Output The output consists of a list of tags in the order that they appear in text. Each tag should start on a new line. All content of a tag should be printed in the same way as it appears in input. If a tag is not finished, it should still be printed. The sample input and output below illustrate behaviour of the program.
Hint : The program should read input character by character and immediatelly produce output or not based on the context.
Hint : you can use getchar() and putchar() OR scanf() and prinf()
Sample Input:
Sample Output:
Explanation / Answer
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char data[50][50];
int c, nr = 0, nc = 0, t = 0;
char temp[600];
//Asks for number or row data to be inputted
strcpy(temp, "");
printf(" Enter the data: ");
do
{
fflush(stdin);
//%[^ ]s for new line character ( )
scanf("%[^ ]s", data[nr]);
t = strlen(data[nr]);
strcat(temp, data[nr]);
strcat(temp, " ");
if(data[nr][t-1] == '.')
break;
nr++;
}while(1);
nc = strlen(temp);
printf(" Enter data: ");
for(c = 0; c < nc; c++)
{
//if it is a < symbol or / symbol
if(temp[c] == '<' || temp[c+1] == '/' )
{
//Loops till > character
do
{
fflush(stdout);
putchar(temp[c]);
c++;
}while(temp[c] != '>' && temp[c-1]!= '.');
//Adds a > symbol because it is excluded in the above
putchar('>');
printf(" ");
}
}
}
Output:
Enter the data: This is sample intermediate text <a tag> and </another tag>
another example. <a tag may contain < character > and > character
may appear outside of a tag. <a tag can
go for
multiple lines> and also <a tag may
not be
finished...
Enter data:
<a tag>
</another tag>
<a tag may contain < character >
<a tag can go for multiple lines>
<a tag may not be finished.>
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.