C 检查字符串中的每个字符会产生意外结果
我正在制作一个base64编码器/解码器,我有一个将输入二进制编码为base64表示的函数。输入为C 检查字符串中的每个字符会产生意外结果,c,string,char,base64,C,String,Char,Base64,我正在制作一个base64编码器/解码器,我有一个将输入二进制编码为base64表示的函数。输入为0和1的字符串 我的if语句未能验证字符串中的每个char是否为“0”或“1”。它说每个char都不是“0”或“1”。即使是这样 我的代码:(不是完整的函数代码…) #包括 #包括 字符*enc(字符*); 内部主(空) { enc(“1101010100101001010010101001”); 返回0; } 字符*enc(常量字符*数据) { int i; 对于(i=0;i始终为true。我想你
0
和1
的字符串
我的if
语句未能验证字符串中的每个char
是否为“0
”或“1
”。它说每个char
都不是“0
”或“1
”。即使是这样
我的代码:(不是完整的函数代码…)
#包括
#包括
字符*enc(字符*);
内部主(空)
{
enc(“1101010100101001010010101001”);
返回0;
}
字符*enc(常量字符*数据)
{
int i;
对于(i=0;i
这将输出每个char
都是而不是0
或1
表意文字:
如果char不是0或char不是1->始终为true。我想你的意思是:
英语中的“nota或b”在布尔逻辑中翻译为“not(a或b)”,根据德摩根定律,它相当于“(nota)和(notb)”
如果char不是0或char不是1->始终为true。我想你的意思是:
英语中的“nota或b”在布尔逻辑中翻译为“not(a或b)”,根据德摩根定律,它相当于“(nota)和(notb)”
如果char不是0或char不是1->始终为true。我想你的意思是:
英语中的“nota或b”在布尔逻辑中翻译为“not(a或b)”,根据德摩根定律,它相当于“(nota)和(notb)”
如果char不是0或char不是1->始终为true。我想你的意思是:
英语中的“非a或b”在布尔逻辑中翻译为“非(a或b)”,根据德·摩根定律,它相当于“(非a)和(非b)”。put&
运算符,用于检查if(数据[i]!='0'&&data[i]!'1')
put运算符,用于检查if(数据[i]!'0'&&data[i]!'1'))
put&
用于检查if(数据[i]!=“0”&&data[i]!=“1”)的运算符
put&
用于检查if(数据[i]!=“0”&&data[i]!=“1”)的运算符
根据printf
语句,我理解您是在检查以确保数据[i]
既不是0也不是1(为了打印错误消息),它转换为(不是0)和(不是1)
。如果要检查数据[i]
是否为0或1,则应使用数据[i]==0 | |数据[i]==1
是的,这是正确的,否则输入的格式会不正确。我在IDEone中尝试了&
方法,效果很好。忍者编辑。这对我来说是个错误,它确实有效,但当我重新运行程序时,stdout
没有清除,所以我认为它给出了相同的输出!根据printf
语句,我明白了您正在检查以确保数据[i]
既不是0也不是1(以便打印错误消息),这将转换为(不是0)和(不是1)
。如果要检查数据[i]
是0还是1,则应使用数据[i]==0 | |数据[i]==1
是的,这是正确的,否则输入的格式会不正确。我在IDEone中尝试了&
方法,效果很好。忍者编辑。这对我来说是个错误,它确实有效,但当我重新运行程序时,stdout
没有清除,所以我认为它给出了相同的输出!根据printf
语句,我明白了您正在检查以确保数据[i]
既不是0也不是1(以便打印错误消息),这将转换为(不是0)和(不是1)
。如果要检查数据[i]
是0还是1,则应使用数据[i]==0 | |数据[i]==1
是的,这是正确的,否则输入的格式会不正确。我在IDEone中尝试了&
方法,效果很好。忍者编辑。这对我来说是个错误,它确实有效,但当我重新运行程序时,stdout
没有清除,所以我认为它给出了相同的输出!根据printf
语句,我明白了您正在检查以确保数据[i]
既不是0也不是1(以便打印错误消息),这将转换为(不是0)和(不是1)
。如果要检查数据[i]
是0还是1,则应使用数据[i]==0 | |数据[i]==1
是的,这是正确的,否则输入的格式将不正确。我在IDEone中尝试了&
方法,它可以工作。忍者编辑。这是我这方面的一个错误,它可以工作,但当我重新运行程序时,标准输出没有清除,所以我认为它给出了相同的输出!
#include <stdio.h>
#include <string.h>
char *enc(char *);
int main(void)
{
enc("1101010100100101001010010101001");
return 0;
}
char *enc(const char *data)
{
int i;
for(i = 0; i < strlen(data); i++)
{
if(data[i] != '0' || data[i] != '1')
{
printf("index %d is not 0 or 1\n", i);
printf("instead it is: %c\n", data[i]);
}
}
return NULL;
}
if(data[i] != '0' || data[i] != '1')
if(data[i] != '0' && data[i] != '1')