为什么我的代码编译通过了,但是一运行就出错呢?
这是今天自己写的小程序,就是输入一串字符,如果全是字母的话,如果首字母是元音字母,就在最后加'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; }
求大神指点!跪谢~