在代码的第一部分中,我为文件中的五个字符串分配空间并打印出来,这弄清楚了第二部分,我试图为每个字符串计算文件中的每个元音。 我想我已经接近我的代码了,但是每次它的计数器打印为零。 我认为第二次尝试读取文件可能会出现问题,但可以在正确的方向使用提示。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main( int argc, char *argv[] )
{
    char max[1024];
    char** buff;
    int i=0 ,num = 5;
    FILE *infile;
    int lc = 0;     //counts how many lines there are
    //asks for file name if none is supplied
    if ( argc < 2 )
    {
        printf("Must supply file name\n");
        return 1;
    }
    infile = fopen( argv[1], "r" );
    //checks to see if file opens
    if ( infile == NULL )
    {
        printf("could not open  %s\n", argv[1]);
        return 1;
    }
    buff = (char**)calloc(sizeof(max),sizeof(char));
    int k;
    for(k=0; k<num;k++){
        buff[k] = (char*)calloc(sizeof(max),sizeof(char));
    }
    while(fgets(max,sizeof(max),infile)){
        strcpy(buff[i],max);
        i++;
    }
    int x;
    for(x =1; x<i;x++){
        lc++;
        printf("%d:%s",x,buff[x]);
    }
    int counter[5];
    char c;
    rewind(infile);
    for(i=0; i<5; i++){
        counter[i]=0;}
    while (fscanf(infile,"%d",&c))
    {
         if (c=='a' || c=='A')
             counter[0]++;
         else if (c=='e' || c=='E')
             counter[1]++;
         else if (c=='i' || c=='I')
             counter[2]++;
         else if (c=='o' || c=='O')
             counter[3]++;
         else if (c=='u' || c=='U')
             counter[4]++;
    }
for(i = 0; i < 5; i++){
    printf("counter[%d] = %d\n", i, counter[i]);
}

#1楼 票数:1

您正在使用fscanf(infile,"%d",&c) %d用于数字,但您需要字符。 请改用%c

  ask by cdude translate from so

未解决问题?本站智能推荐:

1回复

C中计算2个大数的和。数组通过函数后动态分配的数组长度发生变化

我正在编写一个程序来使用char数组添加两个非常大的数字。 我将sum数组动态分配给(较长数字的长度 + 1)以考虑99 + 1 ,其中总和比输入中 2 个数字的较长数字多 1 位。 然而,当我将sum数组传递给add函数时,这个动态分配的数组的长度以某种方式变成了更长的数字的长度,尽管我将它初始化
1回复

从C中的外部文件扫描几行文本

假设您有一个名为test.txt的外部文件,其中包含下一个文本块: 你应该: 扫描文本 使用 DMA(动态内存分配)将其保存到结构中 打印结果这是我的代码: 当然,预期的输出是test.txt的相同副本,但我的输出只是外部文件中的第一行文本(无论我需要扫描多少行文本)。 输出: 我需要更改/添加/
2回复

将字符加载到动态分配的2D数组中

这可能是常见问题之一,但到目前为止我看到的所有解决方案都无效。 我想动态分配二维数组的字符。 我从.txt文件中获取这些字符。 我甚至设置了行数(int r)和列(int s)。 分配本身是有效的,但每当我尝试将文件中的字符加载到此数组中时,它就会崩溃。 不知道为什么。 文件以这种
1回复

如何动态创建结构数组并将数据存储在文件中

我正在写一个通讯录程序。 有插入,显示和删除选项。 插入时,它将获取输入数据并将其存储到文件中。 每当我添加新联系人时,都会将其添加到文件中。 将数据保存到文件后,我可以动态分配一个结构化地址簿数组来存储每个联系人详细信息。 这样,如果我要显示或删除特定联系人,则比打开文件,比较文件中
4回复

用char指针分配

我是初学者。我有一个包含MONSTER,ERRTU,14,2这样的行的文件。 当我尝试读取这些行并将其存储到动态内存分配的数组中时。 似乎一开始它就工作了,但是后来当我尝试打印它的元素时,它不能正常工作。这是关于使用char *吗? 我该如何解决这个问题? 这是我的代码; 这是我的
2回复

尝试从文件中读取单词列表并将其存储到C语言的数组中

我的目标是逐行读取我的文本文件“ dictionary.txt”,并将其中的所有单词保存到名为“ words”的数组中,现在想将其打印以确保数组包含所有内容,但我对C,不确定如何去做。 当我尝试运行该程序时,它崩溃了,不知道为什么。 (这是一个相当大的文本文件,包含149256个单词,最长
3回复

无法将数据从二进制文件读取到结构指针数组中

以下代码将二进制数据写入二进制文件/从二进制文件读取二进制数据。 根据fread返回值,写入成功,即使读取也成功。 但是最后两个或三个值将始终是垃圾,我已经通过减小数组大小来验证了这一点。 如果我们在写入后立即读取文件,则所有值都可以。 但是,如果我们在写入后关闭程序一次,然后以读取的
1回复

从文件打印错误的字符?

我试图打印每行的第一个字符,但由于某种原因,我的代码打印了每行的第二个元素? 我的代码: 一些文本行;