Ich habe eine Datei einer DNA-Sequenz (A's, T's, G's und C's); Es hat keine Leerzeichen, Kommas oder Zeilentrennzeichen. Ich muss die ersten 10.000 Werte daraus lesen und die zwei fünfwertigen Muster finden, die am häufigsten wiederholt werden.Wie liest man eine Datei nach Gruppen von Zeichen in C?
Bisher habe ich versucht, wie dies die unterschiedlichen Muster in einer einfachen Struktur zu speichern:
typedef struct
{
char* pattern;
int count;
} pattern;
und wie ich finde immer neue Muster, die ich sie durch den folgenden Zyklus speichern:
int size = 10;
int pos = 0; //positions occupied
pattern* patrones = calloc(10, sizeof(pattern));
char temp[6];
FILE* file = fopen("dnaChain.txt", "rb");
while(file != NULL)
{
bool has = false;
fgets(temp, 6, file);
for(int i = 0; i <= pos; i++)
{
pattern p = patrones[i];
char* content = p.pattern;
int comp = strcmp(content, temp);
if(comp == 0)
{
has = true;
p.count = p.count+1;
}
}
if(!has)
{
pattern new;
new.pattern = temp;
new.count = 1;
if(pos == size-1)
{
patrones = realloc(patrones, size+10);
size += 10;
}
else{
patrones[pos] = new;}
pos++;
}
}
jedoch Mein Code ist falsch und gibt mir eine segmentation fault
Fehler , wenn ich es ausführen, bitte helfen Sie mir aus.
http://en.cppreference.com/w/c/io/fread –
Nun, wir können Ihnen keine Antwort geben, die Sie mit der Programmierung in C vertraut macht. Sie müssen ein bestimmtes Niveau erreichen und danach fragen Fragen zu bestimmten Problemen, denen Sie begegnen. Wir können Ihnen nicht so helfen! –
@JohnnyMopp das ist C++ Referenz, nicht C. Ich würde lieber OP auf "Mann Fread". –