PDA

View Full Version : سوال: مشکل با strcpy



TheMatrix
پنج شنبه 03 مرداد 1387, 11:24 صبح
سلام دوستان.
میخواستم ببینم چرا وقتی این تکه کدو اجرا میکنم run-time error میده؟

#include <process.h>
#include <iostream>
#include <string.h>

#define MAX_CONN 30

using namespace std;

char *sen[MAX_CONN];

void ps(void*);

int main()
{
sen[0]=new char;
_beginthread(ps,0,NULL);
while(1){ }
}

void ps(void *nothing)
{
strcpy(sen[0],"salamsalamsalamsasalasalamsalamsalamsasalamlamsala msalamsalamsalamsalamsalamsalamsasalasalamsalamsal amsasalamlamsalamsalamsalamsalamsalamsasalamlamsal amsalamsalamsalamsalamsasalamlamsalamsalammlamsala msalamsalamsalamsalamsasalasalamsalamsalamsasalaml amsalamsalamsalamsalamsalamsasalamlamsalamsalamsal amsalamsalamsasalamlamsalamsalammlamsalamsalamsala msalamsalamsasalasalamsalamsalamsasalamlamsalamsal amsalamsalamsalamsasalamlamsalamsalamsalamsalamsal amsasalamlamsalamsalammlamsalamsalamsalamsalamsala msasalasalamsalamsalamsasalamlamsalamsalamsalamsal amsalamsasalamlamsalamsalamsalamsalamsalamsasalaml amsalamsalammlamsalamsalamsalamsalamsalamsasalasal amsalamsalamsasalamlamsalamsalamsalamsalamsalamsas alamlamsalamsalamsalamsalamsalamsasalamlamsalamsal ammlamsalamsalamsalamsalamsalamsasalasalamsalamsal amsasalamlamsalamsalamsalamsalamsalamsasalamlamsal amsalamsalamsalamsalamsasalamlamsalamsalammlamsala msalamsalamsalamsalamsasalasalamsalamsalamsasalaml amsalamsalamsalamsalamsalamsasalamlamsalamsalamsal amsalamsalamsasalamlamsalamsalammlamsalamsalamsala msalamsalamsasalasalamsalamsalamsasalamlamsalamsal amsalamsalamsalamsasalamlamsalamsalamsalamsalamsal amsasalamlamsalamsalammlamsalamsalamsalamsasalamla msalamsalamsalamsalamsalamsasalamlamsalamsalammlam salamsalam");
_endthread();
}

Nima_NF
پنج شنبه 03 مرداد 1387, 15:39 عصر
رشته شما بیش از هزار کارکتر دارد پس باید به اندازه آن ابتدا حافظه اختصاص دهید:



sen[0]=new char[1500];


موفق باشید

TheMatrix
پنج شنبه 03 مرداد 1387, 22:02 عصر
رشته شما بیش از هزار کارکتر دارد پس باید به اندازه آن ابتدا حافظه اختصاص دهید:



sen[0]=new char[1500];

موفق باشید



خب آخه معلوم نیست که چند کاراکتر میخواد توش بره.

Nima_NF
پنج شنبه 03 مرداد 1387, 22:36 عصر
اگر از ورودی در حال دریافت هستید در کنسول باید تعداد کارکتر ها را نیز از ورودی دریافت کنید، اما در برنامه های ویندوز از textbox ها به راحتی تعداد کارکترها را محاسبه کنید و سپس حافظه اختصاص دهید.

در هر حال قبل از عمل strcpy باید تعداد کارکتر مورد نیاز مشخص شود، پس در غیر این صورت حداکثر میزان حافظه را اختصاص دهید.