//1.主函数中设计一个菜单。菜单中可选择"输入字符串"、"链接字符串"、"查找字符"、"查找字符串"等功能。
//用switch-case语句选择完成相应功能的函数。
//2. "输入字符串"函数中要求输入两个字符串,第一个用gets()函数输入,第二个用getchar()函数输入。
//3. "链接字符串"函数要求先判断两个函数的长度,然后将较长的字符串连接在较短的字符串之后。
//4.在"查找字符"函数中先输入一个要查找的字符,函数返回该字符在字符数组中的下标。
//5. 在"查找字符串"函数中先输入一个要查找的字符串,如"aaaa",函数返回该字符串第一个字符在字符数组中的下标。
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "ctype.h"
void f1(char st1[],char st2[]);
void f2(char st1[],char st2[]);
int main()
{
char st1[20],st2[20];
int c=6;
printf("*************************\n");
printf("1.输入字符串\n");
printf("2.链接字符串\n");
printf("3.查找字符\n");
printf("4.查找字符串\n");
printf("5.退出\n");
printf("*************************\n");
while(1)
{
scanf("%d",&c);
switch(c)
{
case 1:f1(st1,st2);
break;
case 2:f2(st1,st2);
break;
case 3:
break;
case 4:
break;
case 5:
break;
default:printf("请输入1~5之间的数字!\n");
}
if(c==5) break;
}
return 0;
}
void f1(char st1[],char st2[])
{
int i=0;
while((st1[i++]=getchar())!='\n');
gets(st2);
}
void f2(char st1[],char st2[])
{
int a,b;
a=strlen(st1);
b=strlen(st2);
if(a>=b)
printf("%s",strcat(st1,st2));
else
printf("%s",strcat(st2,st1));
}
不知道为什么 STR1就是不能输入.求解
那怎么办?
追答void f1(char st1[],char st2[])
{
int i=0;
fflush(stdin);
while((st1[i++]=getchar())!='\n');
gets(st2);
}
改成这样就行了,fflush(stdin); 就是清除输入输入缓冲区的。
话说,我都告诉你原理了,你不会继续google求解么?