سلام خدمت دوستان.
وقتي من از اشاره گر ها استفاده ميكنم حس ميكنم يه جورايي كامپايلر كم مياره (:31:)
انگار پر از اشكال و باگ هستش...(البته نشنيده بگيريد)
_____
كد زير رو ببينيد
کد:#include<iostream.h>
#include<conio.h>
#include<string.h>
void input(char **names, int *numbers, int n);
int search(char **names, int n, char *name );
void output(int *numbers, int index);
int main (){
char **names, name[21];
int *numbers, n, index;
char key;
clrscr ();
cout << " Enter Count ";
cin >> n ;
numbers = new int [n];
input (names , numbers, n);
do {
cout << "\n Enter Name For Search";
cin.get();
cin.get ( name , 20);
index = search(names, n, name );
if (index != -1 ) {
output(numbers, index);
cout << " For a new search press <y>\n ";}
else
cout << " Not Found, for a new search press <y>\na ";
key = getch(); }
while (key == 'y');
return 0 ;}
void input(char **names, int *numbers, int n){
char *name;
for (int i = 0; i < n; i++){
name = new char [21];
cout << "\nEnter Name";
cin.get();
cin.get ( name , 20 );
*(names + i) =name;
cout << "\nEnter Phone Number";
cin >> *(numbers + i );
}}
int search(char **names, int n, char *name){
for (int i = 0; i < n; i++){
if (strcmp( *(names + i) , name) == 0 )
return i;
}
return -1;
}
void output(int *numbers, int index){
cout << "\nPhone Number is ";
cout << *(numbers + index );
}
موقعي كه ميخوام يه مقدار رو به طور مستقيم تويه اشاره گري قرار بدم به اشكال ميخوره.
وقتي كامپايل ميكنم خطا نداره ولي وقتي به :
ميرسه , بهم ميخوره. دليلش رو تغريبا ميدونم ولي روش حلش رو نميدونم.کد:*(names + i) =name;
براي يك بعدي (char *name)از
استفاده ميكنم و مشكل حل ميشه ولي براي دو بعدي :کد:name = new char [21];
چي كار كنم؟؟؟کد:char **names
______
(رويه چندتا كامپايلر امتحان كردم اكثرا به اشكال خوردن ولي يكيشون بدون مشكل اجرا كرد. چرا ؟)