PDA

View Full Version : مرتب کردن در آرایه ای از استراکت



YRajabali
شنبه 21 دی 1387, 17:13 عصر
با سلام خدمت همگی

بنده برای مرتب کردن آریه رشته ای از نوع استراکت (نام نام خانوادگی و ...) تا یه جایی نوشتم اما قسمتی از برنامه که رشته اولی رو با دومی توسط تابع strcmp مقایسه میکنه .... می خوام این دو رشته را جابه جا کنم ارور می دهده و برنامه اجرا نمیشه



void output(struct air a[], int m){
clrscr();
int d;
char temp[20] ;
for(int j=0 ; j<m ; j++)
d =strcmp(a[j].Fname,a[j+1].Fname);
if(d > 0 ){
temp[]=a[j].Fname ;
a[j].Fname = a[j+1].Fname ;
a[j+1].Fname =temp[];
}

Nima_NF
شنبه 21 دی 1387, 18:10 عصر
نحوه جابجایی کاملا اشتباه هست باید تک تک کارکترها جابجا شود(با استفاده از temp)،

اگر قصد کپی کردن رشته ای در رشته دیگر را دارید کپی تک تک نیز لازم نیست به راحتی از تابع strcpy استفاده کنید:




#include <string.h>

strcpy( string1, string2 );

string2 در string1 کپی می شود. سپس از یک رشته temp می توانید استفاده کنید. (البته در ++C برای string توابع مستقیم replace برای رشته ها نیز وجود دارد)

ضمنا بررسی کنید که با j<m مقدار j+1 در انتها از محدوده مجاز خارج نشود.