数据对计算机而言就是2进制,你看乱码说明显示的时候没有对应字符集,你把原文件打开看有乱码没。
或者你文件有中文,你试试用全部英文和数字的文件读取。
另外,文件有格式的话,你换fscanf和fprintf看看。
你找到MySql的服务器安装路径,默认是C:\ProgramFiles\MySQL\MySQL
Server
5.0,找到my.ini这个配置文件,然后把default-character-set的值改成utf8,有两个地方.如果还不行,看下乱码的那个列的编码格式,把字符集改成utf8,把整理改成utf8_general_ci.
完全没看懂你的程序。有明显的几个奇怪的地方。
int time = { 1 }
unsigned int k = { 0 }
这两句不符合C语言语法吧,大括号一般很少用的,一般用在数组上,但是你的变量明显不是数组啊。
k = (unsigned int)malloc(sizeof(unsigned int) * time)
malloc函数,返回的是指针吧。你强制转换的不是指针啊,一般没人这么用,没看懂,为什么要强制转换成unsigned int ?应该写错了吧,是 unsinged int *吧。
p = getchar()//
没看懂,这里为什么要getchar,是因为怕有脏东西吗?这里会出问题的,但是代码看不出会发生什么问题。
scanf_s("%d", k, 8)
这里最好改成这样吧,scanf_s("%d", k, sizeof(unsigned int))这样比较安全,反正你要的是int,直接用sizeof,算出int的字节数就可以了,不用自己知道int是多少个字节,这样可以避免出错。
key[i] = { 0 }
这里则是,完全看不懂,因为不知道key是什么,只知道是个key的数组,是什么类型的,完全没懂,只知道初始化为0。
key[i] = k这里完全没看懂,只能猜了,循环32次,k是一个int的数,一般是4个字节的数,每个字节是8位,所以一个int是32位,你循环32遍,看起来是想把这个int数,一位一位的输出的样子。但是前面k是用mallco申请,k应该是个指针,不是int变量。直接把指针给一个数组,有点奇怪,所以应该是key[i]=*key但是看起来,你是要一位一位的数据,而不是一整个int数,但是这里有个问题,我不知道,你是要低位先出,还是高位先出,而且C语言,想要一位一位的数据,要使用<<,>>左移和右移指令(这里不是C++,所以没有被C++的std::cout复用于输出,这是个标准C语言的底层 *** 作符,一般嵌入式的用的多,IT用的少,所以一般不常用),所以一位一位的输出应该写成key[i]=(*k)>>1或者key[i]=(*k)<<1,这样是分别是左移一位,右移一位后,把数据给key的数组,这里,要根据你自己的代码要实现的功能,去调整。
printf("%d", key)我不知道,你是想输出位数据,还是什么。如果想看位数据,应该输出二进制的数不就好了。而不用输出int型数据。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)