这就是我到目前为止所拥有的.问题是,当"count"变量命中换行符或空格字符时,它没有正确地添加到自身.

#include <stdio.h>
#include <stdlib.h>

int main(void){

    char c;
    int count = 0;
    int* ptr;
    int size;

    FILE *file = fopen("file.txt", "r"); //Reads from input file

    //Test to see if the file exists
    if (file == NULL){
        printf("ERROR 1: TARGET INPUT FILE DOES NOT EXIST, HAS BEEN RENAMED OR HAS BEEN MOVED.");
        exit(1);
    }

    c = fgetc(file);
    while ((c = fgetc(file)) != EOF){

        if(c == " " || c == "\n"){
            count++;
        }

    }

    fclose(file);

    printf("Number of words present in given file: %d", count);  
    return 0;
}

我不太清楚why是不是失败了,尽管我已经查找了多个来源,其中有几乎完全相同的代码似乎对他们有效.输出应返回一个数字,表示.txt文件中的字数.

推荐答案

对于初学者,应该将变量c声明为类型为int而不是char.

此外,While循环之前对fgetc的调用

c = fgetc(file);

被忽略

您正在将整数与指针进行比较

if(c == " " || c == "\n"){

因为上述表达式中的字符串被转换为指向其第一个字符的指针.编译器应该为此if语句发出一条消息.

但如果你愿意写

if(c == ' ' || c == '\n'){

然而,使用字符常量的方法是不正确的,因为它没有考虑相邻的空格.

C++相关问答推荐

位屏蔽对于无符号转换是强制的吗?

了解一些CLIPS原语数据类型

由Go调用E.C.引起的内存快速增长

如何在CANbus RX/TX FIFO起始地址寄存器(ATSAME 51)的特定地址初始化数组?

这个C程序在工作中途停止获取输入.我收到分段故障(核心转储).我还是不知道问题出在哪里

从TCP连接启动UDP(C套接字)

Boyer Moore算法的简单版本中的未定义行为

在C中包装两个数组?

接受任何参数的函数指针是否与接受不同参数的函数兼容

C将数组传递给函数以修改数组

使用ld将目标文件链接到C标准库

我在C程序的Flex/Bison中遇到语法错误

为什么我在C代码中得到一个不完整的类型?

UpDown控制与预期相反

C中2个数字的加法 - 简单的人类方法

根据输入/输出将 C 编译过程分为预处理、编译、汇编和链接步骤

无法理解 fgets 输出

尽管将其标记为易失性,但 gcc 是否优化了我的等待代码?

用于内存布局的size命令(文本、数据、bss)

设置具有非零终止字符串的大整数