我目前编程自己的实现printf,这里是代码:
int my_printf(const char *format, ...)
{
//Declare variable ou prog fonctionnel????
va_list args;
int numberValue;
unsigned int unsignedNumberValue;
double doubleValue;
char* stringValue;
char charValue;
va_start(args, format);
for(int i = 0; format[i]; i++){
//This case is the most called case, so we test it first to get the
//best perfs
if(format[i] != '%'){
my_put_char(format[i]);
}else{
if(format[i+1] == 'd' || format[i+1] == 'i'){
numberValue = va_arg(args, int);
my_put_nbr(numberValue);
}else if(format[i+1] == 'u'){
unsignedNumberValue = va_arg(args, unsigned int);
my_put_nbr_unsigned(unsignedNumberValue);
}else …Run Code Online (Sandbox Code Playgroud) 我试图反转以下代码,以提供一个获取缓冲区并解密它的函数.
void crypt_buffer(unsigned char *buffer, size_t size, char *key) {
size_t i;
int j;
j = 0;
for(i = 0; i < size; i++) {
if(j >= KEY_SIZE)
j = 0;
buffer[i] ^= key[j];
j++;
}
}
Run Code Online (Sandbox Code Playgroud)
我担心如果简单buffer[i] ^= (1/key[j]);就足以解密加密文件了.但是会有一些截断问题,不是吗?