Problem with function which reutrns pointer to a value


 
Thread Tools Search this Thread
Top Forums Programming Problem with function which reutrns pointer to a value
# 1  
Old 10-26-2005
Question Problem with function which reutrns pointer to a value

i have a function:
char *pcCityIdToCountryName(ADMIN_DB_DATA *pstHEader, unit uiCityID)

this returns a pointer to CountryName if cityId is given.
to retrieve countryname i give:

char *CountryName;
CountryName = pcCityIdToCountryName(..................);

but when i compile it is giving :
Unresolved
pcCityIdToCountryName

Iam new to C programming. Please help
# 2  
Old 10-26-2005
The compiler (actually the linker) is telling you that it can't find the

char *pcCityIdToCountryName(ADMIN_DB_DATA *pstHEader, unit uiCityID)

code anywhere. Is this function in another module? If so you will have to link against that module.
Code:
cc myfile.c -o myfile -L<some shared library>
or
cc myfile.c somemodule.o -o myfile

The -L syntax requires you to remove the "lib" from in front of the shared library name:
Code:
libcountry.so

becomes:
-L country

The .so or .sl is not needed.
# 3  
Old 10-26-2005
Thankx for the reply!
As u have said the function is in another file called admin.c, but everything is included in Make file.....
Smilie is the statement i have written correct....
does Unresolved means an error... or can it be ignored?????
# 4  
Old 10-26-2005
unresolved = fatal error

unresolved means the linker could not find it. The program must have it. The program will not run without it.
# 5  
Old 10-26-2005
Thank u. I got the solution. Smilie
# 6  
Old 10-28-2005
Your other post implies you may be passing back a string.

You may prefer to use strcpy like so:

char CountryName[XX*];

strcpy(CountryName, pcCityIdToCountryName(..................) );

*where XX is the size of the string.

The reason being is that you don't know if the char pointer being passed back is still pointing to an allocated memory block. Sometimes I have seen functions pass back a pointer to a local variable or memory being allocated and then made free. It just so happens that you are pointing to a memory location that still has a string (null terminated) value. This may not be the case later on in the program's execution, especially when you are allocating and freeing memory frequently, and you may encounter a memory violation.

At least by copying string into a local variable you can protect against any future problems.

Of course, if it is your own function, you can make your own judgements as to the best way to call it, based on your overall design.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Segmentation fault when I pass a char pointer to a function in C.

I am passing a char* to the function "reverse" and when I execute it with gdb I get: Program received signal SIGSEGV, Segmentation fault. 0x000000000040083b in reverse (s=0x400b2b "hello") at pointersExample.c:72 72 *q = *p; Attached is the source code. I do not understand why... (9 Replies)
Discussion started by: jose_spain
9 Replies

2. Programming

Pure C function pointer on printing vowels twice

Have difficulty to understand this pure C code to only print vowels twice from input string. Questions are commented at the end of each place. #include <stdio.h> #include <stdlib.h> #include <assert.h> #include <limits.h> /* *Demonstrate the use of dispatch tables */ /*Print a char... (11 Replies)
Discussion started by: yifangt
11 Replies

3. Programming

pointer problem

Does anyone know? int x = 1; int *p = &++x; //ok ! int *q = &x++; //gives an error :O why the first pointer is ok but the second is an error? (13 Replies)
Discussion started by: nishrestha
13 Replies

4. Programming

Trivial doubt about C function pointer

Hi, In the below C code, #include <stdio.h> void print() { printf("Hello\n"); } int main() { void (*f)() = (void (*)()) print; f(); (*f)(); } I wonder, how the syntaxes "f()" and "(*f)()" are treated as same without any error? Is this an improvement or ANSI/ISO... (1 Reply)
Discussion started by: royalibrahim
1 Replies

5. Programming

structure pointer array as function parameters

if i create an array of pointers to a structure "struct node" as: struct node *r; and create "n" number of "linked lists" and assign it to the various struct pointers r using some function with a return type as structure pointer as: r=multiplty(.......) /*some parameters*/ is... (2 Replies)
Discussion started by: mscoder
2 Replies

6. Programming

Function Returning Pointer

Hi guys. how a functions such fdopen, ... can return pointer? are these functions use static memory(variables)? (6 Replies)
Discussion started by: majid.merkava
6 Replies

7. Programming

Function pointer to inline function ?

Hi. Problem: I have to parse the payload of a packet. The payload could be in Big Endian Format (network byte order) or little. That depends on a flag present in the header of the packet. Solution: A horrible solution could be to check for that flag everytime I have to read a field in the... (11 Replies)
Discussion started by: emitrax
11 Replies

8. Programming

pass a pointer-to-pointer, or return a pointer?

If one wants to get a start address of a array or a string or a block of memory via a function, there are at least two methods to achieve it: (1) one is to pass a pointer-to-pointer parameter, like: int my_malloc(int size, char **pmem) { *pmem=(char *)malloc(size); if(*pmem==NULL)... (11 Replies)
Discussion started by: aaronwong
11 Replies

9. Programming

How to return void function pointer

Hello all im trying to build function that will return void function pointer what is mean is ( not working ) the main function void * myClass::getFunction(int type){ if(type==1) return &myClass::Test1; if(type==2) return &myClass::Test2; } void myClass::Test1(){... (1 Reply)
Discussion started by: umen
1 Replies

10. Programming

pointer problem

could any one tell why the following is showing segmentation fault while using **ptr but working fine using **a #include<stdio.h> ... (1 Reply)
Discussion started by: useless79
1 Replies
Login or Register to Ask a Question