Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么我的函数返回0而不是文件中的行数?_C - Fatal编程技术网

C 为什么我的函数返回0而不是文件中的行数?

C 为什么我的函数返回0而不是文件中的行数?,c,C,我编写了一个函数,该函数应该读取.txt文件中的句子数,但当调用并完成该函数时,它给我的值为0 这个程序总共有3个以上的函数来计算文件的不同属性,我让它们工作得很好。这个函数的布局与我编写其他函数的方式相同,只是想了解一下为什么我的句子数为0 void ptrCntS (FILE* sp1, int sCount) { char sentence = 'O'; int myChr; if (!(sp1 = fopen("Hello.txt", "r"))) {

我编写了一个函数,该函数应该读取.txt文件中的句子数,但当调用并完成该函数时,它给我的值为0

这个程序总共有3个以上的函数来计算文件的不同属性,我让它们工作得很好。这个函数的布局与我编写其他函数的方式相同,只是想了解一下为什么我的句子数为0

void ptrCntS (FILE* sp1, int sCount)
{
    char sentence = 'O';
    int myChr;

    if (!(sp1 = fopen("Hello.txt", "r")))
    {
        printf("error opening Hello.txt");
        return(1);
    }

    while ((myChr = fgetc(sp1)) != EOF)
    {
        if ('.') 
        {
            sentence ='O';
        } 
        else if (sentence == 'O')
        {
            sCount++;
            sentence = 'I';
        }
    }

    fclose(sp1);
    printf ("Total number of sentences are:\t%d", sCount);

    return;
}

代替退货使用退货(童军); 并将返回值赋给调用函数中的某个int变量 喜欢 int sentCount; . . .
sentCount=ptrCntS(参数1,参数2)

如果('.')始终为真,则其他。。。代码从未到达。改用if(myChr=='.')。

函数现在可以编译并正常运行。此函数是从上一个函数中的开关调用的,在该函数中,我设置了我的地址,并包含总计的打印语句,这样我就不必在最后编写另一个函数来调用所有计数并打印结果。相反,我将case设置为“A”:调用所有计数函数(在本例中,这就是原始代码),然后显示结果。我很抱歉写得太长或太难理解。我是C语言的新手,我很难掌握相关文献,但在理解语法方面做了一些工作

不要将局部变量作为参数传入
sp1
在这个函数之外没有任何意义,所以它应该是一个局部变量,而不是一个参数。你认为如果('.')的话,
会做什么?那代码编译时没有错误吗?函数中的值声明为returning
void
,如何返回?不应
返回(1)给您一个编译错误,因为返回类型是
void
?“这一个与我编写其他函数的方式相同”-这听起来像是您在这里遇到了一些复制和粘贴错误,这些错误对您想要实现的功能不起作用。谢谢您,这解决了我的问题。现在所有被调用的函数都在发回相应的编号,只需要找到最后一个函数来显示它们