Моя проблема приведена ниже - Напишите программу, которая получает данные на входе, программу (из файла) и печатает все переменные в ней как выходные данные.
Пример.Inputprogram.txt
#include<stdio.h>
int main(void)
{
int a, b, c=10;
char p, *ptr=NULL;
unsigned long long int t;
}
Выходные данные должны содержать: a, b, c, p, ptr, t.
Моя программа -
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
int isDataType(char buffer[]){
char types[19][10] = {"char","const","double","float","int","long","register","short","signed",
"static","struct","union","unsigned","void","volatile","int*","char*","float*","enum"};
int i, flag = 0;
for(i = 0; i < 19; ++i){
if(strcmp(types[i], buffer) == 0){
flag = 1;
break;
}
}
return flag;
}
int main(){
char ch, buffer[15], operators[] = "+-*/%=.#";
FILE *fp;
int i,j=0;
fp = fopen("inputprogram.txt","r");
if(fp == NULL){
printf("error while opening the file\n");
exit(0);
}
while((ch = fgetc(fp)) != EOF){
for(i = 0; i < 8; ++i){
if(ch == operators[i])
printf("%c is an operator\n", ch);
}
if(isalpha(ch)){
buffer[j++] = ch;
}
else if((ch == ' ' || ch == '\n' || ch == ',' || (isdigit(ch))== 1) && (j != 0)){
buffer[j] = '\0';
j = 0;
if(isDataType(buffer) == 1)
printf("%s is a data type\n", buffer);
else
printf("%s is a variable\n", buffer);
}
}
fclose(fp);
return 0;
}
Этот кодне дает желаемого результата, если данные типа unsigned long long int
находятся в текстовом файле.Как оптимизировать код таким образом, чтобы при появлении таких типов данных, как unsigned long int
или int *
(int space star), он также мог печатать точную переменную.