casting - Warning in C: assignment makes integer from pointer without a cast -


i keep getting error when compiling program. small part of code, if needed provide rest of code. ideas on why occuring?

void strip_quotes(char s[]) {    if (s[0]=='"') s=s+1;    if (s[strlen(s)-2]=='"') s[strlen(s)-2]=null; } 

as dave has correctly pointed out reason compiler error:

 s[strlen(s)-2]=null; /* = (void*)0 */ 

there bug in code won't cause compiler error:

if (s[0]=='"') s=s+1; 

the increment of s not visible caller, c passes value including pointers (see http://c-faq.com/ptrs/passptrinit.html). options correcting:

  • shift content of array left using memmove() (or other copy mechanism)
  • pass address of pointer (a char**)
  • return pointer s

changing content of s preferable avoids possible problem if array dynamically allocated: pointers returned malloc() (or calloc() , realloc()) can passed free(). if value of s changed cannot free()d via s.

note that:

void strip_quotes(char s[]) { 

is equivalent:

void strip_quotes(char* s) { 

incase confused pointers used in code.


Comments

Popular posts from this blog

SPSS keyboard combination alters encoding -

Add new record to the table by click on the button in Microsoft Access -

javascript - jQuery .height() return 0 when visible but non-0 when hidden -