[C] Stringtabelle in Resourcen einlesen

Ro0mguy

Grünschnabel
Hallo Community,

wie ich ja schon mal geschrieben habe, code ich und ein Freund ein kleines Spiel in C
und wir wollten nun eine Art Highscore-Tabelle
da wir aber keine anderen Dateien mitliefern wollen haben wir uns gedacht dass wir vllt. in den Resourcen eine Stringtabelle anlegen in die wir das reinschreibe.

geht das überhaupt und wenn ja wie?

vielen Dank schon mal

P.S. wir benutzen Pelles C for Windows
 
Zuletzt bearbeitet:
Da die Ressource Teil des Kompilat ist und du dann zur Laufzeit dein Binary verändern würdest, stelle ich mir das grad etwas umständlich vor. Warum machst du nicht einfach eine Liste aus Strings und schreibst sie einfach mittels fwrite in eine Datei?
 
weil man dann leicht "cheaten" könnte und wir immer zwei dateien verteilen müssten
ginge es vllt. indem man eine text-datei durch binärkopie hinten dran hängt

P.S. tut mir leid das erst so spät antworte
 
Die Ressourcen kann man auch auslesen und ändern
Man könnte das ganze verschlüsseln, Prüfsummen etc...
 
mh stimmt wäre eine möglichkeit
ich hab es nochma mit einer binärdatei (also in der cmd 'copy /b') versucht. Aber wenn ich aus der datei lesen will, kommt nur ein leerzeichen

der codeausschnitt ist:
Code:
#include <stdio.h>
#include <stdlib.h>

int main (void)
{
	FILE *datei;
	char text[100+1];
	datei = fopen ("binärkopie.exe", "r");
	
	if (datei != NULL)
	{
		fseek (datei, - sizeof (text), SEEK_END);
		fscanf (datei, "%100c", &text[0]);
		
		text[100] = '\0';
		printf ("%s wie gehts!\n", text);
		
		fclose (datei);
	}

	getchar (); 
	return 0;
}
in der textdatei steht 'hallo'
schon mal danke für antworten
 
Zumindest so, wie du programmiert hast; gibts ein Problem, wenn der Benutzer die Datei einfach umbenennt.

Und in der fertigen Exe rumzupfuschen bringt nur mit Glück was funktionierendes.

Was hast du gegen eine einfach verschlüsselte Datei?

PS: Für den Code oben: Tausch das fscanf mal gegen eine Schleife mit fgetc aus (liest immer ein einzelnes Zeichen) und statt dem printf ein puts
 
Denkt dran, unter Windows kann man nicht eine .exe Beschreiben oder Löschen, die gerade läuft. Da müsstest du das dann schon mit einer anderen .exe machen, und dann hast du auch zwei Dateien. Korrekterweise gehören solche Daten in einen der Benutzer-Ordner (über SHGetSpecialFolder etc. zu bestimmen).

Wenn du unbedingt willst, dass die Datei nicht zerpfuscht wird, kannst du sie ja simpel verschlüsseln. Wenn sich jemand einbildet, sich unbedingt in Highscores reincheaten zu müssen, kannst du das sowieso nicht verhindern. Alles, was lokal liegt, ist angreifbar.
 
Zurück