עזרה בכתיבת קוד

עזרה בכתיבת קוד

אני מנסה לכתוב תכנית עם פונקציה המקבלת את שתי המחרוזת: declaration ו-filename. המחרוזת בשם declaration תיישם שורת הכרזות פשוטות של משתנים בשפת C. על הפונקציה לחשב את כמות הזיכרון שיש להקצות עבור כל משתנה מ-declaration ולשמור את התוצאות בקובץ לרישום דו"ח ששמו הוא תוכן המחרוזת filename.
יש להציג במסך את התוכן של הקובץ הנוצר באמצאות פונקציית עזר.

למשל, ההרצה הבאה מדגימה את פלט של הפונקציה לקובץ (באדום) עבור שתי מחרוזות declaration אפשריות (שורות קלט התוכנית):


int x, y;

x requires 4 bytes
y requires 4 bytes

char c, *cptr, carray[80];

c requires 1 byte
cptr requires 4 bytes
carray requires 80 bytes


המחרוזת declaration אשר תתקבל על-ידי הפונקציה צריכה להכיל:
- טיפוס נתונים (float, long, short, int, char, double).
- הכרזה אחת או יותר של משתנים (אשר יכולים להיות גם מצביעים ומערכים חד-ממדיים) מופרדים עם פסיקים).
- נקודה פסיק לציון סוף שורה.
- רווחים ללא הגבלה במקומות המתאימים (כמו בשורת הכרזות אמיתית).

ניתן להניח ששורת קלט התוכנית (ולכן, גם המחרוזת declaration) היא תקינה.

עד עכשיו זה מה שכתבתי (ראו למטה). נראה שהתכנית רצה בסדר אבל אני מקבל את האזהרה הבאה:
warning C4715: 'theSizeOf' : not all control paths return a value

אני גם תוהה כיצד להשתמש בפונ' strtok בתכנית הזאת.
קוד:
#define _CRT_SECURE_NO_WARNINGS

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

void bytesPerValue(char str[]);
int theSizeOf(char *str);
 int strToNumber(char *str);

void main()
{
	 char str[50];
                        gets(str);

                        bytesPerValue(str);

}

void bytesPerValue(char str[]) 
{
        int i = 0, j = 0;
        int temp = 1;
        int size;
        char* tempChar = (char*)malloc((strlen(str))*sizeof(tempChar));
        while (str[i]!=' ' || str[i]=='*') //checking the type of the variables//
        {
                tempChar[j] = str[i];
                i++;
                j++;   
        }
        tempChar[j] = '\0';
        size = theSizeOf(tempChar);
        j = 0;
        i++;
        while (str[i] != ';')
        {
               
                if (isalpha(str[i]) || str[i]=='_') // for  variables and arrays//
                {
                        while (str[i] != ',' && str[i] != ';') //runs until ', ' or '; ' //
                        {
                                if (str[i]==' ')
                                {
                                        while (str[i]==' ')
                                                i++;
                                }
                               
                                if (str[i] == '[') //checks if it is array//
                                {
                                        printf("%c", str[i]);
                                        i++;
                                        while (str[i] != ']')
                                        {
                                                tempChar[j] = str[i]; //copies the value in the string//
                                                i++;
                                               &
 
למעלה