רוצה להיות מתכנת
New member
עזרה בכתיבת קוד
אני מנסה לכתוב תכנית עם פונקציה המקבלת את שתי המחרוזת: 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 בתכנית הזאת.
אני מנסה לכתוב תכנית עם פונקציה המקבלת את שתי המחרוזת: 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++;
&