文字列を関数に渡し、その文字列に関するデータを含む構造体を返すという単純な目的を達成しようとしています。これを書いたのですが、コンパイルしようとすると実行時エラーが発生し、その理由がわかりません。ご覧いただきありがとうございます。
#include <stdio.h>
#include <ctype.h>
#include <string.h>
struct stringStats
{
int length;
int uppercase;
int lowercase;
int digits;
int nonAlphaNum;
};
struct stringStats stringReader (char anyString[])
{
int i;
struct stringStats returned = {0, 0, 0, 0, 0 };
returned.length = strlen(anyString);
for (i = 0; anyString[i] != '\0'; ++i)
{
if (isupper(anyString[i]))
++returned.uppercase;
if (islower(anyString[i]))
++returned.lowercase;
if (isdigit(anyString[i]))
++returned.digits;
if (isalnum(anyString[i]) == 0)
++returned.nonAlphaNum;
}
return returned;
}
int main(void)
{
struct stringStats stored;
char passedString[] = "Th1s string's g0t it all!";
stored = stringReader(passedString);
printf ("%i\n%i\n%i\n%i\n%i\n", stored.length, stored.uppercase, stored.lowercase,
stored.digits, stored.nonAlphaNum);
return 0;
}