انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: حسین تابش در 12 تیر 1388، 10:02 ب‌ظ

عنوان: مشکل با رشته ها در زبان C (حل شد)
ارسال شده توسط: حسین تابش در 12 تیر 1388، 10:02 ب‌ظ
با سلام خدمت دوستان،
من یه سوالی در رابطه با رشته ها در زبان C دارم.
فرض کنید من ۳ تا رشته دارم که ۲ تا از اون ها رشته های ثابت هستند و یکی از اون ها یک متغییر. به عنوان مثال:

char *string1 = "cp"
char *string2 = "/home/hosein"
یک رشته دیگر هم دارم ولی این رشته ثابت نیست، این رشته اسم یک فایل هستش و طول معینی نداره! یکی ممکنه تو یک بار اجرای برنامه باشه "TEST2" و در یک اجرای دیگه باشه "AAAAAA"! حالا با این فرض من چه جوری می توانم این ۳ تا رشته رو برای اجرای دستور زیر به هم بچسبونم؟

system ( "cp [File Name] /home/hosein" )
با تشکر
عنوان: پاسخ به: مشکل با رشته ها در زبان C
ارسال شده توسط: pedrambehroozi در 12 تیر 1388، 11:10 ب‌ظ
سلام

char* file_name = [File Name];
system ("%s %s %s", string1, file_name, string2);

موفق باشی
عنوان: پاسخ به: مشکل با رشته ها در زبان C
ارسال شده توسط: سعید رسولی در 13 تیر 1388، 02:08 ق‌ظ
از strcat و sprintf هم میشه استفاده کرد.
عنوان: پاسخ به: مشکل با رشته ها در زبان C
ارسال شده توسط: حسین تابش در 17 تیر 1388، 06:01 ق‌ظ


char* file_name = [File Name];
system ("%s %s %s", string1, file_name, string2);

در این صورت با پیغام خطا مواجه می شم که آرگومان اضافی استفاده کردم! از این روش استفاده کردم مشکل حل شد.


char* command = malloc( strlen("cp ") + strlen(filename) + strlen(" /home/hosein") + 1);
sprintf(command, "cp %s /home/hosein", filename);
sysytem (command)
free(command);