c语言编写的程序中数据量一大就会出现出现debug error
#include<stdio.h>#include<stdlib.h>#include<string.h>main(){inti,j=0;char*a,*b,*c;FIL...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{
int i,j=0;
char *a,*b,*c;
FILE *fp;
long iLen;
if ((fp = fopen("D:\\360Downloads\\solexa_100_170_2 - 副本.fa","r")) == NULL)
{
printf("不能打开文件!\n");
exit(0);
}
fseek(fp, 0L, SEEK_END);
iLen = ftell(fp);
a=(char*)malloc(sizeof(char)*9999);
b=(char*)malloc(sizeof(char)*iLen);
c=(char*)malloc(sizeof(char)*iLen);
b[0]='\0';
c[0]='\0';
rewind(fp);
fgets(a,9999,fp);
while (!feof(fp))
{
strcat(b,a);
fgets(a,9999,fp);
}
strcat(b,a);
for(i=0;i<iLen;i++)
{if (b[i]=='A')
c[j++]=b[i];
else if(b[i]=='T')
c[j++]=b[i];
else if(b[i]=='C')
c[j++]=b[i];
else if(b[i]=='G')
c[j++]=b[i];
}
c[j]='\0';
printf("%s\n",c);
free(a);
free(b);
free(c);
fclose(fp);
return 0;
}
请高手帮忙解释 展开
#include <stdlib.h>
#include <string.h>
main()
{
int i,j=0;
char *a,*b,*c;
FILE *fp;
long iLen;
if ((fp = fopen("D:\\360Downloads\\solexa_100_170_2 - 副本.fa","r")) == NULL)
{
printf("不能打开文件!\n");
exit(0);
}
fseek(fp, 0L, SEEK_END);
iLen = ftell(fp);
a=(char*)malloc(sizeof(char)*9999);
b=(char*)malloc(sizeof(char)*iLen);
c=(char*)malloc(sizeof(char)*iLen);
b[0]='\0';
c[0]='\0';
rewind(fp);
fgets(a,9999,fp);
while (!feof(fp))
{
strcat(b,a);
fgets(a,9999,fp);
}
strcat(b,a);
for(i=0;i<iLen;i++)
{if (b[i]=='A')
c[j++]=b[i];
else if(b[i]=='T')
c[j++]=b[i];
else if(b[i]=='C')
c[j++]=b[i];
else if(b[i]=='G')
c[j++]=b[i];
}
c[j]='\0';
printf("%s\n",c);
free(a);
free(b);
free(c);
fclose(fp);
return 0;
}
请高手帮忙解释 展开
1个回答
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const unsigned MAXLEN = 0X0FFFFFFF;// 255MB
const int MAXROWSLEN = 80; // 每行可显示字符数
int main() {
int ch;
unsigned long i,n = 0;
FILE *fp;
char DNA[MAXLEN];
if((fp = fopen("D:\\360Downloads\\solexa_100_170_2 - 副本.fa","r")) == NULL) {
printf("不能打开文件!\n");
exit(0);
}
while((ch = fgetc(fp)) != EOF && n < MAXLEN) {
switch(ch) {
case 'A' :
case 'T' :
case 'C' :
case 'G' : DNA[n++] = ch; break;
}
}
fclose(fp);
for(i = 0;i < n;i++) {
if(i && i % MAXROWSLEN == 0) printf("\n");
printf("%c");
}
if(i % MAXROWSLEN) printf("\n");
return 0;
}
追问
如果我要处理的数据量是10000000个字符呢···刚刚试了一下,溢出,该怎么解决呢
追答
能处理的字符量与内存配置、代码生成的可执行程序的模式有关,这两个问题解决起来并不难,当然,完全没必要,你可以将源数据文件分成多个同类新文件,根据具体需要再做响应的处理。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询