c - Checking each char in a string giving unexpected results -
i'm making base64 encoder/decoder, have function encode input binary base64 representation. input string of 0
's , 1
's.
my if
statement failing validate each char
in string
'0
' or '1
'. says every char
not '0
' or '1
'. though is.
my code: (not total functions code...)
#include <stdio.h> #include <string.h> char *enc(char *); int main(void) { enc("1101010100100101001010010101001"); homecoming 0; } char *enc(const char *data) { int i; for(i = 0; < strlen(data); i++) { if(data[i] != '0' || data[i] != '1') { printf("index %d not 0 or 1\n", i); printf("instead is: %c\n", data[i]); } } homecoming null; }
this outputs every char
not 0
or 1
.
ideone: http://ideone.com/0mqnn4
if(data[i] != '0' || data[i] != '1')
if char not 0 or char not 1 -> true. think meant and:
if(data[i] != '0' && data[i] != '1')
"not or b" in english language translates "not (a or b)" in boolean logic, de morgan's laws, equivalent "(not a) , (not b)".
c string char base64
No comments:
Post a Comment