PDA

View Full Version : یک ارور بعد از کامپایل



Mahdi13.ir
شنبه 13 تیر 1394, 21:30 عصر
من یه برنامه نوشتم که بعد از کامپایل این ارور رو داد.
http://uupload.ir/files/avlk_untitled.bmp
نتونستم تصویر رو آپلود کنم.
آدرسش:
http://uupload.ir/files/avlk_untitled.bmp
دقیقا چیه؟
چرا نمایش داده میشه؟
راه حلش چیه؟


struct data{
char *name;}user[10];
///////////////////////////
getch(user[x].name)

amirtork
شنبه 13 تیر 1394, 22:18 عصر
سلام.
احتمال میدم در بخشی از کد از حدود آرایه خارج شده باشید.
اگر کدی رو که نوشتید قرار بدید فکر کنم دوستان بتونن بهتر راهنمایی تون کنن.

Mahdi13.ir
یک شنبه 14 تیر 1394, 12:21 عصر
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <windows.h>
int digit = 0;
using namespace std;
struct fata{
char *name;
char *family;
char *state;
char *city;
int age;
}user[100];
void add();
void Delete(){}
void show(){}
void Gets(char *s){
char v;
int h=0;
if(s[0]=='\0'){
while(1){
v=getche();
if(v==13)
break;
if(v<=90&&v>=65)
v+=32;
s[h++]=v;
}
cout<<endl;}
else if(s[0]!='\0'){
for(int i=0;s[i];i++){
s[i]='\0';
}
Gets(s);
}
}
void _continue()
{
int c;
clrscr();
printf("\n\tPress number 1 to add new user");
printf("\n\tPress number 2 to delete the user");
printf("\n\tPress number 3 to show list of users");
printf("\n\tPress number 4 to Exit");
printf("\n\tEnter number : ");
scanf("%d",&c);
//Start of switch(c)
switch(c)
{
case 1:
add();
break;
case 2:
Delete();
break;
case 3:
show();
break;
case 4:
exit(1);
break;
default:
printf("\n\tYour entered number is not true\
\n\tPress any key to continue.");
getch();
clrscr();
_continue();
break;
}// End of switch(c);
clrscr();
_continue();
}//end of _continue();
//start of add()
void add()
{ clrscr();
kb(1);
printf("\t\tEnter user's name: ");
// تا اینجا مشکلی نست ولی به اینجا که میرسه ارور میده.
Gets(user[digit].name);
printf("\t\tEnter user's family: ");
Gets(user[digit].family);
printf("\t\tEnter user's age: ");
scanf("%d",user[digit].age);
printf("\t\tEnter user's city: ");
Gets(user[digit].city);
printf("\t\tEnter user's state: ");
Gets(user[digit].state);
digit++;
printf("\n\t\tEnter any key to continue ...");
getch();
printf("\n\t\tNEW USER ADDED SUCCESSFULLY.");
getch();
_continue();
}//End of add()
int main()
{
printf("\n PRESS ANY KEY TO CONTINUE ... ");
getch();
_continue();
getch();
return 0;
}

rahnema1
یک شنبه 14 تیر 1394, 15:22 عصر
سلام
اون اشتباه را که اشاره کردید به خاطر اینه که شما در اون struct تعدادی عضو به صورت اشاره گر تعریف کردید بدون اینکه فضایی به اونها اختصاص بدید
مثلا می تونید هر کدوم را یک آرایه 50 تایی در نظر بگیرید

struct fata
{
char name[50];
char family[50];
char state[50];
char city[50];
int age[50];
} user[100];

Mahdi13.ir
یک شنبه 14 تیر 1394, 15:42 عصر
ممنون بابت راهنماییتون.
ولی من نمیخوام محدودیتی تعریف کنم.
میشه؟
اگرم نشه بازم هم تشکر ویژه به خاطر راهنمایی خوبتون.
کامپایل کردم مشکل حل شد.
خدا خیرتون بده

rahnema1
یک شنبه 14 تیر 1394, 15:50 عصر
ممنون بابت راهنماییتون.
ولی من نمیخوام محدودیتی تعریف کنم.
میشه؟
اگرم نشه بازم هم تشکر ویژه به خاطر راهنمایی خوبتون.
کامپایل کردم مشکل حل شد.
خدا خیرتون بده

اگه حافظه پویا و تابعهایی مثل malloc یا realloc را بهتون درس دادن می تونید از اونها استفاده کنید البته باید یک تابع بنویسید که بتونه یک رشته را خورده خورده پر کنه و اگه جا کم داشت realloc کنید
اگه هم std::string را به شما درس دادند که خیلی راحت می تونید ازش استفاده کنید

Mahdi13.ir
یک شنبه 14 تیر 1394, 18:00 عصر
اگه حافظه پویا و تابعهایی مثل malloc یا realloc را بهتون درس دادن می تونید از اونها استفاده کنید البته باید یک تابع بنویسید که بتونه یک رشته را خورده خورده پر کنه و اگه جا کم داشت realloc کنید
اگه هم std::string را به شما درس دادند که خیلی راحت می تونید ازش استفاده کنید

معلم من استاد own هستند(خودم یاد میگیرم)
متاسفانه در محیط اصلی باز هم این ارور به چشمم میخوره.
فایل برنامه کامل رو قرار میدم تا اگه چیزی هست لطف کنین بگین.
UserManger.rar - 2 KB (http://uptobox.com/spnfgar1kmb4)

zero_ox
یک شنبه 14 تیر 1394, 19:28 عصر
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <windows.h>
int digit = 0;
using namespace std;
struct fata{
char *name;
char *family;
char *state;
char *city;
int age;
}user[100];
void add();
void Delete(){}
void show(){}
void Gets(char *s){
char v;
int h=0;
if(s[0]=='\0'){
while(1){
v=getche();
if(v==13)
break;
if(v<=90&&v>=65)
v+=32;
s[h++]=v;
}
cout<<endl;}
else if(s[0]!='\0'){
for(int i=0;s[i];i++){
s[i]='\0';
}
Gets(s);
}
}
void _continue()
{
int c;
clrscr();
printf("\n\tPress number 1 to add new user");
printf("\n\tPress number 2 to delete the user");
printf("\n\tPress number 3 to show list of users");
printf("\n\tPress number 4 to Exit");
printf("\n\tEnter number : ");
scanf("%d",&c);
//Start of switch(c)
switch(c)
{
case 1:
add();
break;
case 2:
Delete();
break;
case 3:
show();
break;
case 4:
exit(1);
break;
default:
printf("\n\tYour entered number is not true\
\n\tPress any key to continue.");
getch();
clrscr();
_continue();
break;
}// End of switch(c);
clrscr();
_continue();
}//end of _continue();
//start of add()
void add()
{ clrscr();
kb(1);
printf("\t\tEnter user's name: ");
// تا اینجا مشکلی نست ولی به اینجا که میرسه ارور میده.
Gets(user[digit].name);
printf("\t\tEnter user's family: ");
Gets(user[digit].family);
printf("\t\tEnter user's age: ");
scanf("%d",user[digit].age);
printf("\t\tEnter user's city: ");
Gets(user[digit].city);
printf("\t\tEnter user's state: ");
Gets(user[digit].state);
digit++;
printf("\n\t\tEnter any key to continue ...");
getch();
printf("\n\t\tNEW USER ADDED SUCCESSFULLY.");
getch();
_continue();
}//End of add()
int main()
{
printf("\n PRESS ANY KEY TO CONTINUE ... ");
getch();
_continue();
getch();
return 0;
}



کد شما که نصفه و نیمه هست . ولی همین قدرکه یه اچرا داشته باشی




#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <windows.h>
int digit = 0;
using namespace std;
struct fata{
char name[50];
char family[50];
char state[50];
char city[50];
int age;
}user[100];
void add();
void Delete(){}
void show(){}
void Gets(char *s){
char v;
int h=0;
if(s[0]=='\0'){
while(1){
v=getche();
if(v==13)
break;
if(v<=90&&v>=65)
v+=32;
s[h++]=v;
}
cout<<endl;}
else if(s[0]!='\0'){
for(int i=0;s[i];i++){
s[i]='\0';
}
Gets(s);
}
}
void _continue()
{
int c;
// clrscr();
printf("\n\tPress number 1 to add new user");
printf("\n\tPress number 2 to delete the user");
printf("\n\tPress number 3 to show list of users");
printf("\n\tPress number 4 to Exit");
printf("\n\tEnter number : ");
scanf("%d",&c);
//Start of switch(c)
switch(c)
{
case 1:
add();
break;
case 2:
Delete();
break;
case 3:
show();
break;
case 4:
exit(1);
break;
default:
printf("\n\tYour entered number is not true\
\n\tPress any key to continue.");
getch();
// clrscr();
_continue();
break;
}// End of switch(c);
// clrscr();
_continue();
}//end of _continue();
//start of add()
void add()
{ // clrscr();
// kb(1);
printf("\t\tEnter user's name: ");
Gets(user[digit].name);
printf("\t\tEnter user's family: ");
Gets(user[digit].family);
printf("\t\tEnter user's state: ");
Gets(user[digit].state);
printf("\t\tEnter user's city: ");
Gets(user[digit].city);
printf("\t\tEnter user's age: ");
scanf("%d",&user[digit].age);
digit++;
printf("\n\t\tEnter any key to continue ...");
getch();
printf("\n\t\tNEW USER ADDED SUCCESSFULLY.");
getch();
_continue();
}//End of add()
int main()
{
printf("\n PRESS ANY KEY TO CONTINUE ... ");
getch();
_continue();
getch();
return 0;
}

Mahdi13.ir
یک شنبه 14 تیر 1394, 20:58 عصر
لینک سورس کامل رو قرار دادم.
در ضمن این برای قسمت های مهم هست.

rahnema1
یک شنبه 14 تیر 1394, 22:02 عصر
معلم من استاد own هستند(خودم یاد میگیرم)
متاسفانه در محیط اصلی باز هم این ارور به چشمم میخوره.
فایل برنامه کامل رو قرار میدم تا اگه چیزی هست لطف کنین بگین.
UserManger.rar - 2 KB (http://uptobox.com/spnfgar1kmb4)

هر کاری کردم دانلود نشد!
ولی اگه دارید مطابق یک کتاب عمل می کنید سعی کنید عجله نکنید خورده خورده جلو برید از مطالب درس پا را فراتر نذارید وقتی روی مطالب قبلی مسلط شدید به مطالب بعدی بپردازید

Mahdi13.ir
دوشنبه 15 تیر 1394, 14:50 عصر
هر کاری کردم دانلود نشد! ولی اگه دارید مطابق یک کتاب عمل می کنید سعی کنید عجله نکنید خورده خورده جلو برید از مطالب درس پا را فراتر نذارید وقتی روی مطالب قبلی مسلط شدید به مطالب بعدی بپردازید چشم.ممنون /////////////