Hallo an alle!
Ich hab´ mal wieder ein Problem mit C...
Und zwar möchte ich gerne mein Proggie mit 2 Sprachen ausstatten. Das soll
dann so ähnlich wie mit den po-Dateien funktionieren, leider weiss ich nicht
wie und ob überhaupt sowas mit C funktioniert, ware ja toll.
Ich bin jedenfalls erstmal davon ausgegangen, das es nicht geht :-( und hab
selber versucht, sowas in der Art zu realisieren. Bis jetzt bin ich soweit,
das das Prog erstmal fragt, welche Sprache denn gewünscht ist. Ist das
erledigt, wird´s in eine Datei geschrieben (options.txt). So, jetzt kommt das
eigentliche Problem: In zwei Dateien (de.h(de.c), en.h(en.c)) stehen die
Strings mit der Bezeichnung test_s. Nun beschwert der Compiler sich
allerdingens das test_s zweimal definiert ist. Für mich eher unverständlich,
denn immerhin soll ja, je nach Fall, nur eine Datei included werden.
Ich schreibe mal die main.c mit hier rein(... und hoffe nebenbei das das
nicht nervt).
main.c:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifndef DATNAME
#define DATNAME "options.txt"
#endif
extern const char test_s[30]; /* Das ist der String */
void de();
void en();
void lesen();
void de(void)
{
printf("%s\n",test_s);
}
void en(void)
{
printf("%s\n",test_s);
}
void lesen(void)
{
char s[16];
FILE *fhd;
char s3[8]="lang=en";
char s4[8]="lang=de";
int a=0;
fhd=fopen(DATNAME,"r");
fgets(s,8,fhd);
do{
if(strstr(s,s3)){
printf("%s\n",s);
a=1;
break;
}
if(strstr(s,s4)){
printf("%s\n",s);
a=2;
break;
}
fgets(s,8,fhd);
}while(!feof(fhd));
fclose(fhd);
#if a==1 /* kann ich mit Hilfe des PP Variablen ordentlich auslesen? */
#include "en.h"
en();
#endif
#if a==2
#include "de.h"
de();
#endif
#if a==0
printf("Haha! Nix eingegeben...\n");
#endif
}
void main(void)
{
FILE *fhd;
char s[3];
char s2[6]="lang=";
fhd=fopen(DATNAME,"w");
if(!fhd){
printf("Nix mit Datei!!\n");
}else{
printf("Deutsch (de)\nEnglish (en)\n");
printf("> ");
scanf("%s",s);
/* Für Ulf: %c funzt nicht. Ich kann nix eingeben, der macht einfach weiter */
}
if(strcmp(s,"de")){
fputs(s2,fhd);
fputs(s,fhd);
fputs("\n",fhd);
}
if(strcmp(s,"en")){
fputs(s2,fhd);
fputs(s,fhd);
fputs("\n",fhd);
}else{
printf("Please enter en or de!\n");
}
fclose(fhd);
lesen();
}
Meine Theorie: Den Präprozessor interessiert das garnicht, was im Programm
abgeht. Der will einfach nur einbinden. Hmm, hab mal was ausprobiert.
main2.c
#include <stdio.h>
#include <stdlib.h>
void main (void)
{
int a=0;
printf("Eingabe > ");
#if a==1
printf(" Eingabe: 1\n");
#define _T 1
#endif
#if a==2
printf(" Eingabe: 2\n");
#define _T 2
#endif
printf("%i\n",_T);
}
Genau! Es geht nicht richtig! Gebe ich 1 ein: kommt auch 1 wieder raus!
Gebe ich aber nun 2 ein, was kommt dann unlogischerweise raus??? 1!
Was nun? Bin ich zu doof dafür?
Ok das wars, könnt ihr mir bitte einen Tipp geben was ich da wieder falsch
mache?
Bye und danke,
Sebastian, der nun vor Frust Gothic angemacht hat...