大家帮我看看代码哪里出问题了,谢谢了
这是我写的一个程序,里面大部分都有注释,编译没有错误,可是为什么程序执行起来无论我输入什么字符后他都只输入:termimata,这是怎么回事?程序代码:
/*********************************************************************************************************************************************** *file:reverse.c * *功能:编辑一个源程序,使得程序实现以下功能: *(1)连续读入一串字符数据,最大读入长度为200。直到遇到停止标示符才终止。这里终止标示符可以由读者更改,默认为数字0; *(2)把这些字符数据逆序输出; *(3)输出这些逆序后的字符,而且作为字符串的形式连续输出; * ***********************************************************************************************************************************************/ #include<stdio.h> #define max 200 //定义max为最大输入限制; #define token '0' //定义token为输入终止标志,用户可以改; #include<ctype.h> static int getchararray (char array[max],int maxer,char tokener);//子函数声明; static void reversechararray (char array[max],int n); static void switchchar (char array[max],int i,int n); static void printfreversechar (char array[max],int n); void main() { int n; char array[max]; printf("这个程序是为了逆序输出用户输入的字符\n"); printf("请您输入字符,输入时连续输入,空格也算一个字符,用数字字符0作为结束输入的标志\n"); n=getchararray(array,max,token); reversechararray(array,n); printfreversechar(array,n); } //子函数1:输入子函数。功能:将用户输入的一个个字符一次存储到数组array中,而且要对超量输入和标识符输入进行检测以及做出反应。 //最后返回输入的字符个数n; static int getchararray (char array[max],int maxer,char tokener) { int n=0; char value; while(1) { scanf("%c",&value); array[n]=value; if(value='0') printf("terminata\n");break; n++; if(n>=max) printf("char is too many\n");break; } return (n); } //子函数2:反转子函数。功能:将用户输入保存在数组array中的有效元素一次转化成逆序输出,无返回值,主要是对数组进行操作; static void reversechararray (char array[max],int n) { int i; for(i=0;i<=n/2;i++) switchchar(array,i,n); } //子函数3:交换数组中两个字符子函数。功能:将保存用户输入字符的array中的第i个字符和第n-i-1个字符交换,无返回值,主要是对数组进行操作; static void switchchar (char array[max],int i,int n) { int x; x=array[i]; array[i]=array[n-i-1]; array[n-i-1]=x; } //子函数4:输出逆序字符子函数。功能:将逆序后的数组输出,要按照字符串的格式输出,无返回值,主要是实现输出操作; static void printfreversechar (char array[max],int n) { int i; for(i=0;i<=n;i++) printf("%c",array[i]); printf("\n"); }