Hello everyone, I am having two problems in my code, I believe they might be tied together in my the same incorrect line of thinking. So I'm hoping for a 3rd party perpective.
Problems are as follows:
Code:
printf("String 3 is: %s\n\n", SplitString);
is cutting off the last letter.
AND
-I can't get the frequencies to calculate properly, maybe because it's missing counting a letter.
Thank you
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/**65-90 A-Z 97 **/
int main()
{
char InString1[255] = {0};
char InString2[255] = {0};
char InString3[101] = {0};
char SplitString[255];
int LengthInString1;
int LengthInString2;
int LengthInString3;
int LengthSplitString;
int Frequency[128] = {0};
int c = 0;
printf("Enter string 1: ");
fgets(InString1,254,stdin);
printf("Enter string 2: ");
fgets(InString2,254,stdin);
printf("Enter string 3: ");
fgets(InString3,101,stdin);
LengthInString1 = strlen(InString1) - 1;
LengthInString2 = strlen(InString2) - 1;
LengthInString3 = strlen(InString3) - 1;
InString1[LengthInString1 - 1] = '\0';
InString2[LengthInString2 - 1] = '\0';
InString3[LengthInString3 - 1] = '\0';
strncpy(SplitString, InString1, LengthInString1 / 2);
strcat (SplitString, &InString2[(LengthInString2 / 2)]);
LengthSplitString = strlen(SplitString) - 1;
SplitString[LengthSplitString + 1] = '\0';
printf("String 1 is %d bytes long, and String 2 is %d bytes long\n", LengthInString1 , LengthInString2);
printf("String 3 is: %s\n\n", SplitString);
printf("FREQUENCY TABLE\n");
printf("--------------------------------\n");
printf("Char\tCount\t%% of Total\n");
printf("----\t-----\t----------------\n");
while ( InString1[c] != '\0' )
{
if ( InString1[c] >= 'a' && InString1[c] <= 'z' )
Frequency[InString1[c]-'a']++;
else if ( InString1[c] >= 'A' && InString1[c] <= 'Z' )
Frequency[InString1[c]-'A']++;
c++;
}
for ( c = 0 ; c < 52 ; c++ )
{
if( Frequency[c] != 0 )
{
printf("%c\t%d\t%.2f\n",c+'a',Frequency[c],(float)Frequency[c]/c*100);
}
}
system("pause");
return 0;
}