为什么我的代码编译通过了,但是一运行就出错呢?
这是今天自己写的小程序,就是输入一串字符,如果全是字母的话,如果首字母是元音字母,就在最后加'py',如果首字母是非元音,就把第一个删掉,在最后加上'py'。但是输完字符串,一按回车就出错了。
程序代码:#include <stdio.h>
#include <stdlib.h>
void input_f(char str[])
{
scanf("%s",str);
if(!check_f(str))
printf("ERROR");
//eturn 0;
}
void change_f(char * str)
{
int len;
lower_f(str);
len = strlen_f(str);
if(len >= 100)
{
printf("Too Long!");
return 0;
}
if (str[0] == 'a' || str[0] == 'e' || str[0] == 'i' || str[0] == 'o' || str[0] == 'u')
{
str[len++] = 'p';
str[len++] = 'y';
str[len] = '\0';
}
else
{
int i;
for( i = 1; i < len; i++ )
{
str[i - 1] = str[i];
}
str[i++] = 'p';
str[i++] = 'y';
str[i] = '\0';
}
}
void print_f(char str[])
{
printf("%s",str);
}
void lower_char_f(int * str)//修改为小写
{
if(*str < 'a')
*str = *str + ('a' - 'A');
}
void lower_f(char str[])
{
int len;
len = strlen_f(str);
int i;
for( i = 0; i < len; i++)
{
if(str[i] < 'a')
str[i] = str[i] + ('a' - 'A');
}
}
int strlen_f(char * str)//== (char str[])
{
int len,i;
for( i = 0;; i++)
{
if(str[i] == '\0')
{
len = i;
break;
}
}
return len;
}
int check_f(char * str)//if:void check_f()?
{
int len,i;
len = strlen_f(str);
for( i; str[i] != '\0'; i++)
{
if(str[i] < 'A' || str[i] > 'z' || str[i] > 'Z' && str[i] < 'a')
return -1;
}
return 1;
}
int main()
{
char str[105],flag;
printf("Welcome Pig(),Please input the string now!");
input_f(str);
change_f(str);
print_f(str);
printf("Do you want again?");
scanf("%c",&flag);
lower_char_f(flag);
return 0;
}
求大神指点!跪谢~








