大家帮我看看代码哪里出问题了,谢谢了
这是我写的一个程序,里面大部分都有注释,编译没有错误,可是为什么程序执行起来无论我输入什么字符后他都只输入: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");
}









