以下是引用rjsp在2020-6-10 20:16:59的发言:
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
bool ar( const char* s, char n )
{
for( ; *s && *s!=n; ++s );
return *s==n;
}
int main( void )
{
for( ; ;)
{
char a[100];
printf("输入字符串(别超过98个字符):");
if( !fgets(a,sizeof(a),stdin) )
break;
size_t n = strlen(a);
if( a[n-1] != '\n')
{
puts( "你不听劝告,输入的字符串太长了。" );
break;
}
a[n-1] = '\0';
printf("输入字符:");
int b = getchar();
if( b == EOF )
break;
scanf( "%*[^\n]" );
scanf( "%*c" );
bool result = ar( a, b );
printf( "字符串 \"%s\" 中%s字符 \'%c\' \n\n", a, (result?"存在":"不存在"), b );
}
}
为何你的代码可以重复输入字符串,在我的代码中将gets改为fgets语句之后,我的代码依然无法重复输入字符串?
![](zzz/editor/img/code.gif)
程序代码:
#include"stdio.h"
int ar(char *p,char n){
int j;
j=0;
int i;
i=0;
while(p[i]){
if(p[i]==n){
j=1;
break;
}
else
;
i++;
}
return j==1?1:0;
}
int main(void){
char *y;
int r=1;
char b;
int c,i;
i=0;
char a[100];
printf("输入字符串:");
fgets(a,sizeof(a),stdin);
while(1){
printf("输入字符:");
b=getchar();
c=ar(a,b);
printf("%d\n",c);
printf("输入字符串:");
fgets(a,sizeof(a),stdin);
}
return 0;
}