Ich versuche ein Programm zu schreiben, das eine Textdatei eingibt und das häufigste Zeichen und wie oft findet. Ich bekam immer 0 für das Ergebnis. Hier ist mein Code:C Häufige Zeichen aus einer Textdatei finden
#include <stdio.h>
int main(int argc, char *argv[])
{
FILE *fp;
char *filename;
char ch;
int array[255] = {0};
char str[]= "";
int i, max, index;
// Check if a filename has been specified in the command
if (argc < 2)
{
printf("Missing Filename\n");
return(1);
}
else
{
filename = argv[1];
printf("Filename : %s\n", filename);
}
// Open file in read-only mode
fp = fopen(filename,"r");
// If file opened successfully, then print the contents
if (fp)
{
printf("File contents:\n");
while ((ch = fgetc(fp)) != EOF)
{
for (i = 0; i < 255; i++){
ch = str[i];
}
// Find the letter that was used the most
for(i = 0; str[i] != 0; i++)
{
++array[str[i]];
}
max = array[0];
index = 0;
for(i = 0; str[i] != 0; i++)
{
if(array[str[i]] > max)
{
max = array[str[i]];
index = i;
}
}
printf("The max character is: %c \n", str[index]);
printf("The amount is %d\n", max);
}
}
else
{
printf("Failed to open the file\n");
}
return(0);
}
Dies ist die Ausgabe aus dem Code: Dateiname: text.txt Dateiinhalt: Der max Charakter ist:
Die Menge beträgt 0 Der max Charakter ist:
die Menge ist 0 der max Charakter ist:
die Menge 0 ist der maximale Charakter ist:
die Menge beträgt 0
Die 'for' Schleife mit der Bedingung' str [i] = 0 'wird einmal als 'str ausgeführt werden [1]'' 0 '!. –
Diese erste 'for'-Schleife wird überhaupt nicht ausgeführt (basierend auf Initialisierungswerten). Warum ist es da? – e0k
Zuerst ist der Einzug korrekt. – BLUEPIXY