Tal como lo definen los estándares de C, la sintaxis del bucle for es:
for (initialisation; condition; increment/decrement) ...
Sintácticamente, debe haber dos puntos y coma, un paréntesis de apertura, un paréntesis de cierre y la ortografía correcta de «for». Por lo tanto, para verificar solo la sintaxis del bucle for, lo que hace un compilador es verificar las siguientes condiciones:
- Solo se escribe “for”, y no “For”, “FOR”, “for” o cualquiera de sus variantes.
- La declaración total consta de dos puntos y comas “;” antes de que termine el paréntesis de cierre «)».
- Presencia de un paréntesis de apertura «(» después de la palabra clave «for» y presencia de un paréntesis de cierre «)» al final de la declaración.
Ejemplos:
Input : for (i = 10; i < 20 i++) Output : Semicolon Error Input : for(i = 10; i < 20; i++ Output : Closing parenthesis absent at end
Código –
#include <stdio.h> #include <stdlib.h> #include <string.h> //array to copy first three characters of string str char arr[3]; void isCorrect(char *str) { //semicolon, bracket1, bracket2 are used //to count frequencies of //';', '(', and ')' respectively //flag is set to 1 when an error is found, else no error int semicolon = 0, bracket1 = 0, bracket2 = 0, flag = 0; int i; for (i = 0; i < 3; i++) arr[i] = str[i]; //first 3 characters of the for loop statement is copied if(strcmp(arr, "for") != 0) { printf("Error in for keyword usage"); return; } //Proper usage of "for" keyword checked while(i != strlen(str)) { char ch = str[i++]; if(ch == '(') { //opening parenthesis count bracket1 ++; } else if(ch == ')') { //closing parenthesis count bracket2 ++; } else if(ch == ';') { //semicolon count semicolon ++; } else continue; } //check number of semicolons if(semicolon != 2) { printf("\nSemicolon Error"); flag++; } //check closing Parenthesis else if(str[strlen(str) - 1] != ')') { printf("\nClosing parenthesis absent at end"); flag++; } //check opening parenthesis else if(str[3] == ' ' && str[4] != '(' ) { printf("\nOpening parenthesis absent after for keyword"); flag++; } //check parentheses count else if(bracket1 != 1 || bracket2 != 1 || bracket1 != bracket2) { printf("\nParentheses Count Error"); flag++; } //no error if(flag == 0) printf("\nNo error"); } int main(void) { char str1[100] = "for (i = 10; i < 20; i++)"; isCorrect(str1); char str2[100] = "for i = 10; i < 20; i++)"; isCorrect(str2); return 0; }
Producción :
No error Opening parenthesis absent after for keyword
Publicación traducida automáticamente
Artículo escrito por Sagnik Chaudhuri y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA