我正在尝试进行编程培训。正如我的法国人一样,我的变数可能看起来很奇怪但很好。我把我的整个代码放在这个下面。部分窃听是“Liste * CreerListe”。那就是魔术发生的地方,以及泰坦尼克号落下的地方。由于某种原因,它要么不允许我将名为S的char数组放入我的Class侦听器中,要么它可以工作,但在它之后放置8倍“1/2”。关于为什么以及如何解决它的任何想法?
///------------------------------------------
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <ctype.h>
#include <string.h>
#include "Struct.h"
int B64(int v)
{
if (v < 26) return ('A' + v);
if (v < 52) return ('a' + (v - 26));
if (v < 62) return ('0' + (v - 52));
if (v == 62) return '+';
return '/';
}
LISTE*CreerListe(char v[])
{
LISTE* mot;
char *temp = v;
mot = (LISTE*)malloc(sizeof(LISTE));
//mot->s = {};
//printf("%i", strlen(v));
strncpy(mot->s, temp, strlen(temp));
return mot;
}
void ConversionB64(LISTE* v)
{
int longueur=0, i=0, j = 0 , temp = 0,decalage=0;
longueur = strlen(v->s);
for (i = 0, j = 8; i < longueur; ++i)
{
temp = (v->s[i])<<(j*(longueur-i))+temp;
}
decalage = (longueur * 6);
for (decalage; decalage>-1;decalage-=6)
{
printf("%c", B64((temp >> decalage) & 0x03f));
}
printf("\n");
}
main()
{
LISTE*mot;
char v[] = "Brutus";
//printf("%i", strlen(v));
mot =CreerListe(&v);
//int f = 0, z = 0;
//f = strlen(mot->s);
//z = strlen(v);
//printf("%d, %d",f,z );
//ConversionB64(mot);
printf("%s", mot->s);
_getch();
}
/--------------------- Here is LISTE (struct.h)
#ifndef LISTE_H
#define LISTE_H
typedef struct Liste
{
char s[];
}LISTE;
LISTE *CreerListe(char v[]);
#endif