#5 z
No jo, já jsem nenastavil ukazatel na buffer zase na začátek při čtení toho zbytku. Děkuju moc.
Příspěvky odeslané z IP adresy 89.103.141.–
Matěj
Matěj
Ahoj, napsal jsem program pro načtení dat ze souboru pomocí dynamického pole jako "bufferu", ale bohužel mi hází Debug Assertion chybu
File: f:\dd\vctools\crt_bld\self_x86\crt\src\close.c
Line: 48
Expression: (_osfile(fh) & FOPEN)
Byl bych vděčný za odhalení, co se za hláškou skrývá, vypadá to na chybu na heapu, takže špatná práce s pointrem?
Děkuji
#include <stdio.h>
#include <stdlib.h>
#define VELIKOST 1024
#define VELIKOSTHLEDANI 2
int main(){
FILE *fr;
int i,j,k,velikost,rozdil;
int prubeh = 0;
char *bufferstart;
char *buff;
char hledam[VELIKOSTHLEDANI];
int vysledky[VELIKOSTHLEDANI];
vysledky[0] = 0;
vysledky[1] = 0;
hledam[0] = 'a';
hledam[1] = 'x';
bufferstart = (char *)malloc(VELIKOST);
buff = bufferstart;
if(buff != NULL){
fr = fopen("File.txt","r+b");
if(fr != NULL){
fseek(fr,0,SEEK_END);
velikost = ftell(fr);
fseek(fr,0,SEEK_SET);
prubeh = velikost/VELIKOST;
for(i = 0; i < prubeh;i++){
buff = bufferstart;
fread((void *)buff,sizeof(char),VELIKOST,fr);
for(j = 0; j < VELIKOST; j++){
for(k =0;k<VELIKOSTHLEDANIk++){
if(*buff == hledam[k]){
vysledky[k]++;
}
}
buff++;
}
}
rozdil = velikost % VELIKOST;
fread((void*)buff,1,rozdil,fr);
for(j = 0; j < rozdil; j++){
for(k = 0;k<VELIKOSTHLEDANI;k++){
if(*buff == hledam[k]){
vysledky[k]++;
}
}
buff++;
}
fclose(fr);
}
}
printf("%c je zastoupeno poctem %d \n %c je zastoupeno poctem %d",hledam[0],vysledky[0],hledam[1],vysledky[1]);
getchar();
return 0;
}