标题:在循环中不断读取新的字符串和字符做为函数的两个参数,并且将它们传递给函 ...
取消只看楼主
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
结帖率:90.38%
已结贴  问题点数:20 回复次数:4 
在循环中不断读取新的字符串和字符做为函数的两个参数,并且将它们传递给函数
在循环中不断读取新的字符串和字符做为函数的两个参数,并且将它们传递给函数,然后在函数中判断如果形参字符串包含形参字符,则返回1,否则返回0.
但该程序为何无法输入字符串?请问以下代码有什么问题?
程序代码:
#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("输入字符串:");
    gets(a[0]);
    while(1){
        printf("输入字符:");
        b=getchar();
        c=ar(a,b);
        printf("%d\n",c);
        printf("输入字符串:");
        i++;
        gets(a[i]);
    }
    return 0;
}

搜索更多相关主题的帖子: int 函数 字符串 字符 char 
2020-06-10 18:19
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
得分:0 
以下是引用lin5161678在2020-6-10 20:19:41的发言:

    char *a[100];
    printf("输入字符串:");
    gets(a[0]);
a[0] 野指针 GG
后面不用看了

那这里应该怎么改?
2020-06-10 23:05
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
得分:0 
以下是引用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语句之后,我的代码依然无法重复输入字符串?
程序代码:
#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;
}
2020-06-10 23:30
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
得分:0 
回复 楼主 hffjhhh
有没人来解释下我上面的疑惑?
2020-06-11 18:22
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
得分:0 
回复 5楼 hffjhhh
顶一下,有人看到这个问题吗?
2020-06-11 21:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-502049-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.952643 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved