1215787625 发表于 2023-11-29 08:26:17

为什么此函数无法输入str1与str2

#include<stdio.h>
#include<string.h>
int main()
{
        float f;
        scanf("%f",&f);
        char str1,str2;
        gets(str1);
        getchar();
        gets(str2);
        int l,n=0,a;
        l = strlen(str1);
        printf("%s\n",str1);
        for(a=0;a<l;a++){
                strcmp(str1,str2);
                if(strcmp(str2,str2)==0){
                  n++;       
                }
                else{
                        n=n;
                }
        }
        float fz;
        fz = 1.0*n/l;
        if(fz>=f){
                printf("yes");
        }
        else{
                printf("no");
        }
        return 0;
}

FishC_GPT 发表于 2023-11-29 08:26:28

问题出在获取字符串输入的方式上。在 C 语言中,使用 `gets()` 函数获取字符串输入时,需要提前为字符串变量分配足够的内存空间。

此外,`str1` 和 `str2` 的定义应该是字符数组,而不是单个字符。因为你想要输入的是一个完整的字符串,而不是单个字符。

以下是修正后的代码:

#include <stdio.h>
#include <string.h>

int main()
{
    float f;
    scanf("%f", &f);
    char str1, str2;
    getchar(); // 读取换行符

    gets(str1);

    gets(str2);

    int l, n = 0, a;
    l = strlen(str1);
    printf("%s\n", str1);
    if (l >= f)
    {
      printf("yes");
    }
    else
    {
      printf("no");
    }
    return 0;
}

请注意,此代码只是演示如何获取字符串输入并比较其长度是否大于等于指定的浮点数 `f`。其他功能需要根据实际需求进行修改。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 为什么此函数无法输入str1与str2