aboutsummaryrefslogtreecommitdiff
path: root/count_nucleobases.c
diff options
context:
space:
mode:
Diffstat (limited to 'count_nucleobases.c')
-rwxr-xr-xcount_nucleobases.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/count_nucleobases.c b/count_nucleobases.c
index d1a4f1c..c2aafe5 100755
--- a/count_nucleobases.c
+++ b/count_nucleobases.c
@@ -5,27 +5,34 @@
#include <stdint.h>
int main(int argc, char **argv) {
+ char *line = NULL;
+ size_t len = 0;
+ ssize_t read;
if(argc != 2) {
printf("Please supply a filename, and only a filename\n");
exit(EXIT_FAILURE);
}
+
FILE *fh = fopen(argv[1], "r" );
if(fh == NULL) {
fprintf(stderr, "Couldn't open: %s\n", argv[1]);
exit(EXIT_FAILURE);
}
- char line[8192];
- long unsigned long counts[256];
- while (fgets(line, 8192, fh) != NULL) {
+ unsigned long long counts[256] = {0};
- unsigned int i = 0;
- for(i = 0; i < strlen(line); i++) {
- counts[line[i]]++;
+ while ((read = getline(&line, &len, fh)) != -1) {
+ if(line[0] != '>') {
+ unsigned int i = 0;
+ for(i = 0; i < strlen(line); i++) {
+ counts[line[i]]++;
+ }
}
}
+ free(line);
+
printf("A:%llu\nC:%llu\nG:%llu\nT:%llu\n",
counts['a'] + counts['A'],
counts['c'] + counts['C'],