1、汉字乱码是因为缓冲区有字符,需要用fflush(stdin);来清空键盘缓冲区,
使用getch等都是治标不治本的办法,可以多学习一下fflush的使用,对于大批量的手动输入,很用。
2、例程:
#include"stdio.h"
#include"stdlib.h"
#include
main()
{
char x;
while(1)
{
printf("请输入一个小写字母:");
fflush(stdin);//清空键盘缓冲区
x = getchar();
printf("大写字母为:\n");putchar(x - 32);
}
}
看你这图比较面熟,你是不是用的Code::Blocks? 如果是的话:
这是CodeBlocks编译器设置问题,在CodeBlocks菜单选择
Settings -> Compiler and debugger settings -> Global compiler settings -> Other options ,在其中输入语句
-fexec-charset=GBK -finput-charset=UTF-8
else { p->next=temp->next; //结点在中间位置 printf("delete %d people\n",temp->num); free(temp); }
如果temp已经漂到尾结点,temp->next是位置的,就像一楼说的越界,所以最好做一个是否是末尾结点的判断,当为最后一个,直接删除free.
(“” ; /n),可能少了一些符号?!
越界访问了