Hallo Welt
Ich habe ein Problem mit Schleifen: Das Programm soll einen c-Kommandofenstercode in einen php-Code umwandeln.
Wenn diese Schleife so ist:
bezieht sich das else logischerweise auf das vorhergehende if. Wenn ich aber überall ein else if hinpflastere, wird jedes mal eine neue Zeile "geöffnet", sodass man keine 2 Funktionen auf einer Zeile habe kann, was recht unpraktisch ist.
Wie kann ich machen, dass sich das letzte else auf alle if's bezieht?
Wahrscheinlich ist die Lösung recht einfach, aber ich komm' einfach nicht drauf...
cwriter
Ich habe ein Problem mit Schleifen: Das Programm soll einen c-Kommandofenstercode in einen php-Code umwandeln.
Code:
#include "stdlib.h"
#include "windows.h"
#include "stdio.h"
#include "conio.h"
#include "time.h"
int main(int argc, char *argv[])
{
char Eingabe[256];
char Lesen[2048];
char* pch;
int lines=0;
FILE* f;
FILE* fp;
printf("Gib den Namen der .php Datei an:\n");
scanf("%s",&Eingabe);
strcat(Eingabe,".php");
f=fopen(Eingabe,"w+");
fprintf(f,"<?php\n");
printf("Gib den Namen der umzuwandelnden Datei an:\n");
scanf("%s",&Eingabe);
strcat(Eingabe,".c");
fp=fopen(Eingabe,"r");
while(fgets(Lesen,2048,fp)!=0) lines++;
printf("\n\n%d lines found. ",lines);
if(lines==0)
{
printf("No Data found. Ending...\n");
return 0;
}
else
{
printf("\n\n");
}
fseek(fp,0,SEEK_SET);
lines=0;
label: printf("");
while(fgets(Lesen,2048,fp)!=0)
{
lines++;
if(strstr(Lesen,"#")!=NULL)
{
printf("Deleted: Define\n");
}
if(strstr(Lesen,"int main")!=NULL)
{
printf("Deleted: main()\n");
goto label;
}
if(strstr(Lesen,"printf")!=NULL)
{
printf("Changed: printf() to echo\n");
pch=strtok(Lesen,"\"");
pch=strtok(NULL,")");
fprintf(f,"echo \"%s;\n",pch);
}
if(strstr(Lesen,"char")!=NULL)
{
fprintf(f,"$");
pch=strtok(Lesen," ");
if(strstr(Lesen,"]")!=NULL)
{
pch=strtok(NULL,"]");
fprintf(f,pch);
fprintf(f,"];\n");
}
else
{
pch=strtok(NULL,";");
fprintf(f,pch);
fprintf(f,";\n");
}
}
if(strstr(Lesen,"int")!=NULL)
{
fprintf(f,"$");
pch=strtok(Lesen," ");
pch=strtok(NULL,";");
fprintf(f,pch);
fprintf(f,";\n");
}
if(strstr(Lesen,"short")!=NULL)
{
fprintf(f,"$");
pch=strtok(Lesen," ");
pch=strtok(NULL,";");
fprintf(f,pch);
fprintf(f,";\n");
}
if(strstr(Lesen,"long")!=NULL)
{
fprintf(f,"$");
pch=strtok(Lesen," ");
pch=strtok(NULL,";");
fprintf(f,pch);
fprintf(f,";\n");
}
if(strstr(Lesen,"puts")!=NULL)
{
printf("Changed: puts() to echo\n");
pch=strtok(Lesen,"(");
pch=strtok(NULL,")");
fprintf(f,"echo $%s;\n",pch);
}
if(strstr(Lesen,"return 0")!=NULL)
{
printf("Taken: return 0 to return 0\n");
fprintf(f,Lesen);
}
if(strstr(Lesen,"return")!=NULL)
{
printf("Changed: return to return\n");
pch=strtok(Lesen,"r");
pch=strtok(NULL," ");
pch=strtok(NULL,";");
fprintf(f,"return $%s;\n",pch);
}
if(strstr(Lesen,"{")!=NULL)
{
printf("Begin: {\n");
fprintf(f,"{\n");
}
if(strstr(Lesen,"}")!=NULL)
{
printf("End: }\n");
fprintf(f,"}\n");
}
if(strstr(Lesen,"if")!=NULL)
{
printf("Taking: if to if\n");
pch=strtok(Lesen,"(");
pch=strtok(NULL,")");
fprintf(f,"if(%s)\n",pch);
}
else
{
printf("Line %d: Error: Foreign Function: %s",lines, Lesen);
printf(" ->including as comment.\n");
fprintf(f,"//%s",Lesen);
}
}
fprintf(f,"\n?>\n");
system("PAUSE");
return 0;
}
Wenn diese Schleife so ist:
Code:
else
{
printf("Line %d: Error: Foreign Function: %s",lines, Lesen);
printf(" ->including as comment.\n");
fprintf(f,"//%s",Lesen);
}
Wie kann ich machen, dass sich das letzte else auf alle if's bezieht?
Wahrscheinlich ist die Lösung recht einfach, aber ich komm' einfach nicht drauf...
cwriter