- 論壇徽章:
- 0
|
不多說了直接看代碼.
- //
- //統(tǒng)計(jì)line<550的個(gè)數(shù)
- //
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #include<unistd.h>
- int main()
- {
- int i = 0,j,num;
- FILE *fd;
- char fline[200],*a,*b;
-
- if( ( fd = fopen("/home/changminghua/code/qyld.log.2007-03-01.11","r") ) == NULL )
- printf("open log error");
-
- a = malloc(200);
- b = malloc(10);
-
- while(!feof(fd))
- {
- memset(a,0x00,200);
- memset(b,0x00,10);
- memset(fline,0x00,200);
- fgets(fline,200,fd);
-
- if( (a = strstr(fline,"line=")) != NULL )
- {
- for(j = 0 ; *(a+5+j) != ',';j++) //1。取line=后面的整數(shù)
- *(b+j) = *(a+5+j); //
- if ( (num=atoi(b))<550 ) //2。統(tǒng)計(jì)line小于550的個(gè)數(shù)
- i = i+1;
- };
- }
-
-
- fclose(fd);
- free(a);
- free(b);
- printf("line <550 的個(gè)數(shù)為 %d\n",i);
- return 0;
- }
復(fù)制代碼
gdb第二次跟到fgets這里就報(bào)段錯(cuò)
27 fgets(fline,200,fd);
(gdb)
Program received signal SIGSEGV, Segmentation fault.
0x40080454 in fgets () from /lib/libc.so.6 |
|