| 

.NET C# Java Javascript Exception

3
hallo Leute ;

ich will ein C programm schreiben . ich muss zuerst ein File offnen . Es ist einfach mit fopen() methode . und dann kann ich alle characteren mit hilfe fgetc() methode lesen .bis jetzt es schwer mir nicht . aber jetzt , in file datei gibt es ein String z.B "aaaabbbccc" .
ich muss das zu 4a3b3c umschreiben. daher hab ich ein counter erstellt , das ist auch ok , ich kann das finden , wieviele letter gibt es . aber ich koennte das nicht schreiben , dass ich nicht als 3a auf char array schreiben.

Danke Voraus
kazimkazim
11.03.2011
Gast
31 1
@Neues Mitglied: es wäre wirklich hilfreich deine Fragen nicht per Google Translate zu übersetzen, da die Qualität doch spürbar niedrig ist.
STATUS_ACCESS_DENIED 13.03.2011
2 Antworten
3
So ganz versteh ich die Frage nicht, bzw. was genau das Problem ist, aber vielleicht hilft ja dieses Code Snippet:

#include <stdio.h> 
#include <string.h>

int main(void) {

char* input = "aaaabbbccc";
char* ptr = input;

int length = strlen(input);
int current = -1;
int counter = 0;

while (length > 0) {

char c = *ptr;

if ((int)c == current) {
counter++;
}
else {
if (current != -1) {
printf("%d%c", counter, (char)current);
}
counter = 1;
current = (int)c;
}
ptr++;
length--;
}

if (counter != -1) {
printf("%d%c", counter, (char)current);
}

return 0;
}


Output:
4a3b3c
11.03.2011
Daniel Kuppitz 596 6
0
Wenn ich das richtig verstehe, geht es dir darum etwas in der Art wie Lauflängenkodierung (RLE) zu implementieren. Dabei wird, vereinfacht gesagt, das Vorkommen eines jeden Zeichens gezählt und anstelle des eigentlichen Zeichens die Anzahl der Vorkommen und dann das entsprechende Zeichen gespeichert.

Die erste Rückfrage wäre in einem solchen Fall was genau bezweckt werden soll. Sprich: soll der Größenbedarf minimiert werden oder nicht? Das spielt dann eine Rolle wenn die Entscheidung fällt ob die Kodierung binär vorgenommen werden soll oder nicht. Hier nehme ich einfach mal einen einfachen String an. Dennoch bliebe auch hier die Frage wie du soetwas dekodieren willst in dem Schema welches du selbst gezeigt hast.

Während aaaabbbccc zu 4a3b3c noch Sinn macht, wie sieht es denn bei der Kodierung von bcaaaaaaaaaaaaaaabbbcc zu 1b1c15a2b2c aus? Und vor allem wie willst du das Dekodieren? Interessant wird es, wenn der Ausgangstext statt Buchstaben selbst Zahlen enthält, bspw.: 1111111111111111222322233444545556666. Wenn wir das nach Schema F kodieren, haben wir 161321232233415143546. Jetzt wird es schwer ... welcher Teil bezeichnet die Anzahl, welcher das kodierte Zeichen? Wie du siehst, braucht man einen Trenner oder ähnliches, denn ansonsten wird diese Form der Kodierung unumkehrbar. Vorschläge sind in dem verlinkten Artikel enthalten.

Ansonsten hat Daniel (bis auf das Auslesen aus einer Datei) ja schon vorgelegt.
13.03.2011

Stelle deine C-Frage jetzt!