2 votes

Programme C pour demander deux fichiers distincts, puis affiche le nombre de caractères, de lignes et de mots.

Je suis en train d'écrire un programme pour faire cela mais j'ai des messages d'erreur. J'ai changé la ligne fopen-s en ce qu'elle est maintenant mais ce message apparaît après avoir entré les deux noms de fichiers ? message d'erreur

Aucun message d'erreur ne s'affiche dans Visual Studio, mais je ne suis pas sûr que ce ne soit pas le problème.

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

int main()
{
//setting names of ints and chars.
FILE *file_in;
int wordcount, linecount, charcount;
char letter;
char filename1[50];
char filename2[50];

//setting all counts to 0.
wordcount = 0;
linecount = 0;
charcount = 0;

//Gets the user to enter name of file, then puts it in string.
printf("\n Enter first text document\n");
gets_s(filename1);
printf("\n Enter second text document\n");
gets_s(filename2);

//opens then reads the first file.
fopen_s(&file_in, filename1, "r");

    // counts the number of words, then lines, then letters in doc 1. 
    while ((letter = getc(file_in)) != EOF);
    {
        if (isspace(letter) && !isspace(getchar()))
        {
            wordcount++;
        }
        if (letter == '\n');
        {
            linecount++;
        }
        if (letter == '-')
        {
            charcount++;
        }
    }

    //opens then reads the second file.
    fopen_s(&file_in, filename2, "r");

    // counts the number of words, then lines, then letters in doc 2.
    while ((letter = getc(file_in)) != EOF);
    {
        if (isspace(letter) && !isspace(getchar()))
        {
            wordcount++;
        }
        if (letter == '\n');
        {
            linecount++;
        }
        if (letter == '-')
        {
            charcount++;
        }
    }

    //displays the total on screen.
    printf_s("Words:", wordcount, "\n");
    printf_s("Letters", charcount, "\n");
    printf_s("Lines", linecount, "\n")

}

0voto

kassad Points 75

Fopen_s prend 3 arguments. Le premier est le pointeur, auquel vous voulez assigner le fichier, le second est le nom du fichier et le troisième est la façon dont vous voulez accéder au fichier ("r", "w", etc).

-2voto

medman826 Points 87

J'ai trouvé quelques éléments à modifier ici... Ce code a fonctionné pour moi :

#include "stdio.h"
#include "stdlib.h"
#include "ctype.h"

int main(int argc, char *argv[])
{
    //setting names of ints and chars.
    FILE *file_in;
    int wordcount, linecount, charcount;
    int letter;
    char filename1[50];
    char filename2[50];

    //setting all counts to 0.
    wordcount = 0;
    linecount = 0;
    charcount = 0;

    printf("Enter first text document: ");
    fgets(filename1, 50, stdin);
    ch = filename1;
    while(*ch != '\n')
        ch++; 
    *ch = '\0';
    printf("Enter second text document: ");
    fgets(filename2, 50, stdin);
    ch = filename2;
    while(*ch != '\n')
        ch++; 
    *ch = '\0';

    //opens then reads the first file.
    file_in = fopen(filename1, "r");

    // counts the number of words, then lines, then letters in doc 1. 
    while((letter = fgetc(file_in)) != EOF)
    {
        if (letter == ' ')
        {
            wordcount++;
        }
        else if (letter == '\n')
        {
            linecount++;
        }
        else
        {
            charcount++;
        }
    }

    //displays the total on screen.
    printf("File 1...\n");
    printf("Words: %d\n", wordcount);
    printf("Letters: %d\n", charcount);
    printf("Lines: %d\n", linecount);

    //opens then reads the second file.
    file_in = fopen(filename2, "r");

    //reset counts
    wordcount = 0;
    linecount = 0;
    charcount = 0;

    // counts the number of words, then lines, then letters in doc 2.
    while((letter = fgetc(file_in)) != EOF)
    {
        if (letter == ' ')
        {
            wordcount++;
        }
        else if (letter == '\n')
        {
            linecount++;
        }
        else
        {
            charcount++;
        }
    }

    //displays the total on screen.
    printf("File 2...\n");
    printf("Words: %d\n", wordcount);
    printf("Letters: %d\n", charcount);
    printf("Lines: %d\n", linecount);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X