Ben ik weer
In deel 1 zaten een paar goede oplossingen, alleen met mijn
C-compiler werken memmoves, -copys niet goed. Dus moet het met string-operaties. Eenvoudig dacht ik, dus ik probeerde
Alleen dit werkt niet goed. Iemand een idee wat wel werkt?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| int fstrstr(FILE *fp, const char* searchString, int bufsize)
{
char *readString;
int searchLength, restLength;
char *pos = NULL;
int posDiff, found = 0;
searchLength = strlen(searchString);
restLength = bufsize - searchLength;
if(searchLength > bufsize)
return 0;
readString = (char *D malloc(bufsize + 1);
if(readString == NULL)
return 0;
printf("%i %i\n", searchLength, restLength);
while(!feof(fp))
{
strncpy(readString, readString + restLength - 1, searchLength);
if(fgets(readString + searchLength, restLength, fp) == NULL)
//if(fread(readString + searchLength, restLength, 1, fp) <= 0)
break;
pos = strstr(readString, searchString);
if(pos != NULL)
{
printf("FOUND\n");
posDiff = readString - pos;
fseek(fp, -posDiff, SEEK_CUR);
found = 1;
break;
}
}
free(readString);
return found;
} |
Alleen dit werkt niet goed. Iemand een idee wat wel werkt?