c语言 程序块,你不知道c语言写的程序要多块——以NGS fastq文件reads计数为例

// gcc -g -O3 -Wall fastq_count_nomal.c -o fastq_count_nomal -lz

#include

#include

#include

#include

#include

#include

#include

#include

//#include

struct globalArgs_t {

const char *infile; /* -i option */

int verbosity; /* -v option */

} globalArgs;

void load_file(gzFile fp,unsigned long *Line_num);

static inline int readNextNode(gzFile fq,char *buf[4]) ;

void display_usage(char * argv[]);

static inline long long usec(void);

static gzFile open_input_stream(const char *filename);

long long usec(void){

struct timeval tv;

gettimeofday(&tv,NULL);

return (((long long)tv.tv_sec)*1000000)+tv.tv_usec;

}

void display_usage(char * argv[]){

char *buffer=(char* )malloc(10240*sizeof(char));

const char* usage=

"\nCopyright (c) 2020\n" \

"Contact: XiongXu \n" \

"Discription:\n This program is used for cutting the reads to get the specified cycles.\n" \

"Usage: %s [-i Infile] [-o OUTFILE] [-s start] [-e end] [-h] \n" \

"Example1:\n %s -i /share/work1/staff/xuxiong/test/13C37198_L7_I012.R1.clean.fastq.gz -s 0 -e 100 -o out \n" \

"Example2:\n zcat /share/work1/staff/xuxiong/test/13C37198_L7_I012.R1.clean.fastq.gz |%s -e 100 -o sss \n" \

"Example3:\n zcat /share/work1/staff/xuxiong/test/13C37198_L7_I012.R1.clean.fastq.gz |%s -e 50 |less -S \n" \

"\n" \

" [-i Infile] = Infile.default is stdin [required]\n" \

" [-v ] = verbose mod [option]\n" \

" [-h] This helpful help screen. [option]\n" \

"\n";

sprintf(buffer,usage,argv[0],argv[0],argv[0],argv[0]);

fprintf(stderr,"%s",buffer);

free(buffer);

exit(1);

}

gzFile open_input_stream(const char *filename){

int fd ;

if (strncmp(filename,"-", 1)==0 || !strcmp(filename,"")) {

fd = STDIN_FILENO;

} else {

#if defined(__APPLE__) && defined(__MACH__) || defined(unix) || defined(linux)

fd = open(filename, O_CREAT | O_RDONLY, 0666 );

#else

fd = _open(filename, _O_CREAT|_O_BINARY | _O_RDONLY , 0666 );

#endif

if (fd==-1) fprintf(stderr, "Failed to create input file (%s)", filename);

}

gzFile in = gzdopen(fd,"rb");

return in;

}

int readNextNode(gzFile fq,char *buf[4]) {

int i=1;

buf[0]=gzgets(fq,buf[0],1024*sizeof(char));

if (!gzeof(fq)) {

buf[1]=gzgets(fq,buf[1],1024*sizeof(char));

buf[2]=gzgets(fq,buf[2],1024*sizeof(char));

buf[3]=gzgets(fq,buf[3],1024*sizeof(char));

if (globalArgs.verbosity) fprintf(stdout,"%s%s%s%s",buf[0],buf[1],buf[2],buf[3]);

} else {

return 0;

}

return i;

}

void load_file(gzFile fp,unsigned long *Line_num) {

long long begin,end;

begin=usec();

char *buf[4];

int i=0;

for(i=0;i<4;++i) {

buf[i] = (char *)calloc(1024,sizeof(char));

}

while (1) {

int status=readNextNode(fp,buf);

if (!status) break;

(*Line_num)++;

}

end=usec();

fprintf(stderr,"Total_reads: %lu\nFinished in %.3f s\n",*Line_num,(double)(end-begin)/CLOCKS_PER_SEC);

for(i=0;i<4;++i) {

free(buf[i]);

}

}

int main(int argc, char *argv[])

{

int opt = 0;

globalArgs.infile="-";

globalArgs.verbosity=0;

const char *optString = "i:vh?";

if (argc<2){

display_usage(argv);

exit(1);

}

opt = getopt( argc, argv, optString );

while( opt != -1 ) {

switch( opt ) {

case 'i':

globalArgs.infile = optarg;

break;

case 'v':

globalArgs.verbosity++;

break;

case '?': /* fall-through is intentional */

case 'h':

display_usage(argv);

break;

default:

fprintf(stderr,"error parameter!\n");

/* You won't actually get here. */

break;

}

opt = getopt( argc, argv, optString );

}

gzFile in=open_input_stream(globalArgs.infile);

unsigned long reads_num=0;

load_file(in,&reads_num);

gzclose(in);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#中将Base64编码的字符串转换为图片并保存到程序根目录可以参考以下代码: ```csharp using System; using System.Drawing; using System.IO; namespace Base64ToImage { class Program { static void Main(string[] args) { // Base64编码的字符串 string base64String = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AIGDQsgA2VwNQAAAAd0RVh0QXV0aG9yAKmuzEgAAAAMdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzQgKFdpbmRvd3MpIDIzLzA2LzEyLmltZ3sIAhAAACmSURBVDjLpZM9SgNBFIUf+SvWCmHSQn6kC1i1VYS0j7QqP4Db4HYz9AOl4gj4Bf4A8NGs4CmW6W7fjF5ICzI8Uwi8wDQr4QWSfT7ecmcA5jS1l1dn/8CsAzXuG0adWpnuO5XlZmKp7uqZ5JSUojk7+iv05bRpNfJdRkLcOAZklmSj8y+/zV/At5pPRqNbKbZ3tnqGq1aBvGxJ7F5NjVmLs/y+Dz0hvL1+1C8AAAAASUVORK5CYII="; // 将Base64编码转换为字节数组 byte[] bytes = Convert.FromBase64String(base64String); // 将字节数组转换为Image对象 Image image; using (MemoryStream ms = new MemoryStream(bytes)) { image = Image.FromStream(ms); } // 保存图片到程序根目录 string fileName = "test.png"; // 保存的文件名 string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName); // 获取程序根目录并与文件名拼接成完整路径 image.Save(path); } } } ``` 运行程序后,会在程序根目录生成一个名为`test.png`的图片文件。你可以将`base64String`变量替换为你需要转换的Base64编码字符串,也可以将`fileName`变量替换为你需要保存的文件名。注意,保存的文件名必须包含图片格式后缀,例如`.png`、`.jpg`等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值