From fa141b5216ac2ab8959cb1a6751e73e6596c6b92 Mon Sep 17 00:00:00 2001 From: Calvin Morrison Date: Fri, 21 Mar 2014 13:09:20 -0400 Subject: add sequence length command --- src/sequence_length.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/sequence_length.c (limited to 'src') diff --git a/src/sequence_length.c b/src/sequence_length.c new file mode 100644 index 0000000..b31aac3 --- /dev/null +++ b/src/sequence_length.c @@ -0,0 +1,55 @@ +// Copyright 2013 Calvin Morrison +#include +#include +#include +#include +#include +#include +int main() { + + ssize_t len = 0; + + char buffer[4096]; + bool header = false; + + len = fread(&buffer, 1, 1, stdin); + + unsigned long long seq_length = 0; + if(!errno) { + if(buffer[0] == '>') { + header = true; + + while((len = fread(&buffer, 1, 4096, stdin)) != 0) { + size_t i = 0; + for(i = 0; i < len; i++) { + if(buffer[i] == '>') { + printf("%llu\n", seq_length); + seq_length = 0; + header = true; + continue; + } + else if(buffer[i] == '\n' && header == true) { + header = false; + continue; + } + if(header == false && buffer[i] != '\n') { + seq_length++; + } + } + } + } + else { + fprintf(stderr, "this does not look like a fasta file\n"); + return EXIT_FAILURE; + } + } + else { + fprintf(stderr, "could not read file\n"); + return EXIT_FAILURE; + } + + printf("%llu\n", seq_length); + + return EXIT_SUCCESS; +} + -- cgit v1.2.3