文本中的常量字数

标签 c string

我尝试编写一个程序来计算从文件中获取的文本中的单词数。我有一个问题,编译器找不到我的文件,但是我将此文件放在项目文件夹中。 我能做什么?

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

int words(const char sentence[ ]);

int main(void) {
    char sentence[100];
    FILE *cfPtr;

    if ( (cfPtr = fopen("C programming.dat", "r")) == NULL ) {
        printf( "File could not be opened\n" );
    }
    else {
        fscanf(cfPtr, "%s", sentence);
    }

    words(sentence);
    printf("%d", words(sentence));
    getch();
    return 0;
}

int words(const char sentence[ ]) {
    int i, length = 0, count = 0, last = 0;
    length = strlen(sentence);

    for (i = 0; i < length; i++)
        if (sentence[i] == ' ' || sentence[i] == '\t' || sentence[i] == '\n')
            count++;

    return count;
}

最佳答案

我将尝试提高程序的可用性,接受文件名作为可选参数

int main(ant argc, char *argv[]) {
    char sentence[100];
    const char *filename = "C programming.dat";
    FILE *cfPtr;

    if (argc == 2)
       filename = argv[1];

    if ( (cfPtr = fopen(filename, "r")) == NULL ) {
        printf( "File '%s' could not be opened\n", filename );
    }
    else {
        int total = 0;
        while (fgets(sentence, sizeof sentence, cfPtr))
           total += words(sentence);
        printf("%d", total);
        fclose(cfPtr);
    }
    getch();
    return 0;
}
...

注意:未经测试

关于文本中的常量字数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17222557/

相关文章:

将复杂的 C Typedef 语句转换为 Delphi 记录

c - 如何使用 OpenGL 进行渲染但仍将 SDL 用于事件?

string - 在lua中将字符串转换为十六进制?

java - 如何根据最后一个 "/"将字符串分成两部分

javascript - 测试字符串是否为 html 的最佳方法

c - 为什么删除功能在这里不起作用?

c - 调试 c 中读取的 csv

regex - Java替换所有方法附加替换字符串而不是替换

c# - 是否可以执行以字符串表示的 C# 代码?

c - 如何评估我的输入参数是否将所有偶数位都设置为 1?