m.beh
02-06-2007, 00:26
سلام
من می خواهم به صورت پویا یک آرایه ی 2 بعدی از کاراکتر ها ایجاد کنم
یعنی یک آرایه که شامل اشاره گرهایی(pointer) باشه که هر کدوم به یک آرایه از کرکترها (string) اشاره میکنند
می دانم که باید با دستور char **array بنویسم ولی نمی دونم از نظر سینتکس اگه بخواهم طول و عرضشونو معین کنم چی کار کنم
#include<stdio.h>
#include<alloc.h>
#include<conio.h>
#include<stdlib.h>
main(){
char **p;
p=(char*)malloc(sizeof(char*)*3* ;
p[1]=(char*)malloc(1*2);
p[2]=(char*)malloc(1*5) ;
p[3]=(char*)malloc(1*4);
p[5]=(char*)malloc(1*8);
scanf("%s%s%s%s",p[1],p[2],p[3],p[5]);
printf("%s%s%s%s",p[1],p[2],p[3],p[5]);
این بر نامه را نوشتم ولی اگه با این دستورات آشنا باشید می دونید که p*درحقیقت آرایه ای از آرا یه هاست که ما اینجا براش 3 عنصر در نظر گرفتیم
اما اگر خطوط بعدی برنامه را بخوانید می بینید که عنصر 5 از ش را خواسته ایم و این برنامه error نداد که باید می داد
در ضمن فکر کنم که باید
p=(char**)malloc(sizeof(char*)*3*;
را بنویسم ولی error می دهد قسمتی که نوشته شده)**char) و فقط با یک ستاره قبول می کند
اگه راهی به ذهنتان می رسد کمک کنید
ممنون
من می خواهم به صورت پویا یک آرایه ی 2 بعدی از کاراکتر ها ایجاد کنم
یعنی یک آرایه که شامل اشاره گرهایی(pointer) باشه که هر کدوم به یک آرایه از کرکترها (string) اشاره میکنند
می دانم که باید با دستور char **array بنویسم ولی نمی دونم از نظر سینتکس اگه بخواهم طول و عرضشونو معین کنم چی کار کنم
#include<stdio.h>
#include<alloc.h>
#include<conio.h>
#include<stdlib.h>
main(){
char **p;
p=(char*)malloc(sizeof(char*)*3* ;
p[1]=(char*)malloc(1*2);
p[2]=(char*)malloc(1*5) ;
p[3]=(char*)malloc(1*4);
p[5]=(char*)malloc(1*8);
scanf("%s%s%s%s",p[1],p[2],p[3],p[5]);
printf("%s%s%s%s",p[1],p[2],p[3],p[5]);
این بر نامه را نوشتم ولی اگه با این دستورات آشنا باشید می دونید که p*درحقیقت آرایه ای از آرا یه هاست که ما اینجا براش 3 عنصر در نظر گرفتیم
اما اگر خطوط بعدی برنامه را بخوانید می بینید که عنصر 5 از ش را خواسته ایم و این برنامه error نداد که باید می داد
در ضمن فکر کنم که باید
p=(char**)malloc(sizeof(char*)*3*;
را بنویسم ولی error می دهد قسمتی که نوشته شده)**char) و فقط با یک ستاره قبول می کند
اگه راهی به ذهنتان می رسد کمک کنید
ممنون