Sponsored Content
Full Discussion: String pointer does not work
Top Forums Programming String pointer does not work Post 302886313 by Corona688 on Thursday 30th of January 2014 02:59:27 PM
Old 01-30-2014
Just because a function returns a value, doesn't mean you need to use it. The in-place functions return pointers for convenience -- so you can do printf("%s\n", strrev(string)); instead of strrev(string); printf("%s\n", string); But the pointer itself should not change (they'd hardly be "in place" if they did).

Notably, it means you cannot do this:

Code:
char buf[]="slartibartfast";
buf=strrev(buf);

But this will work just fine for a function that works in-place:
Code:
char buf[]="slartibartfast";
strrev(buf);

That other function on the other hand actually does allocate new memory which should be freed later. Take a good look at line 57. What, exactly would it do? You need a free() somewhere, but that's not really a useful place to put it. the return() causes the function to end before its freed. ...and if you put it first, you'd be returning invalid memory -- memory that'd already been freed. That's no good either. So where does it need to go?


Code:
char *newpointer;
printf("%s\n", newpointer=copyreverse(oldpointer));
free(newpointer);

As for why your program didn't work, I'd have to see it to guess. You piled several problems in your example for brevity but they interacted with each other and obscured the point.

Last edited by Corona688; 01-30-2014 at 04:05 PM..
This User Gave Thanks to Corona688 For This Post:
 

10 More Discussions You Might Find Interesting

1. Programming

String and pointer problem

i am having a string like " X1 " ---> string lenght is 30 I have stored this to a chararry . ref so here ref = " X1 " now i trim the left space by my function . Si the string now becomes "X1 " ---> string lenght is 15... (3 Replies)
Discussion started by: arunkumar_mca
3 Replies

2. 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

3. Solaris

string extraction won't work. Why?

#!/usr/bin/ksh set -x testfile=my.test.file.flag echo ${testfile: (-4)} #/home/maldohe/scripts/spawn1& sleep 3 echo myspawn is now ending exit Background: I am trying to extract the word flag from anf given file name. This is a demo script that I am working on to fix a production issue.... (8 Replies)
Discussion started by: Harleyrci
8 Replies

4. Programming

segfault in pointer to string program

hello all, my question is not about How code can be rewritten, i just wanna know even though i am not using read only memory of C (i have declared str) why this function gives me segfault :wall:and the other code executes comfortably though both code uses same pointer arithmetic. ... (4 Replies)
Discussion started by: zius_oram
4 Replies

5. UNIX for Dummies Questions & Answers

Counting vowels in string. "Comparison pointer-integer".

I'm trying to write a programme which scans strings to find how many vowels they contain. I get an error saying that I'm trying to compare a pointer and an integer inif(*v == scanme){. How can I overcome this ? Also, the programme seems to scan only the first word of a string e.g.: if I type "abc... (1 Reply)
Discussion started by: fakuse
1 Replies

6. Programming

How i use pointer as a string in c programing?

I'm newbie learner. My all friend use windows just only me use linux. so i can't solve any problem by myself. i need a solution. how can i use pointer as a string. #include<string.h> #include<stdio.h> int main() { char *s='\0'; gets(s); puts(s); return 0; } This code work on... (6 Replies)
Discussion started by: raihan004
6 Replies

7. Programming

Scanf() string pointer problem

I have a problem with scanf() for string pointer as member of a struct. #include <stdio.h> #include <stdlib.h> struct Student { int studentNumber; int phoneNumber; char *studentName; //line 7 // char studentName; //line 8 }; int... (10 Replies)
Discussion started by: yifangt
10 Replies

8. Shell Programming and Scripting

Why does bc work with 'here string' and not via pipe in this example?

Hi! I actually got it running, but I still would like to understand, why and how, since I am a beginner in bash scripting. I Need floating numbers and thus use bc in my bash script. Here it is: #!/bin/bash num1="10^-15" | bc -l #power function piped to bc - DOES NOT WORK echo $num1... (4 Replies)
Discussion started by: McHale
4 Replies

9. Shell Programming and Scripting

How to extract work in line string.?

Hello all, Soon I will be receiving a new file. I've asked the source system to put "TRAILER.1+0000007+1" for the trailer to indicate full receipt of file. I need to know how to separate TRAILER so I can use it in a if statement. I used the tail command but not sure how to incorporate awk or... (11 Replies)
Discussion started by: pone2332
11 Replies

10. UNIX for Beginners Questions & Answers

C shell concatenate string doesn't work

I have the following code: #!/bin/csh clear set cloud_file="/home/labs/koren/davidsr/general_scripts/MFP_10_PP_Parmas.txt" # to fill set mie_tables_dir='/home/labs/koren/davidsr/SHDOM_MAIN/MIE_TABLES/non_polo_wave_0.7_water_50R_s0.5_e25_max_70.mie' # to fill set prp_dir='${pp_dir}/pp_prp/'... (2 Replies)
Discussion started by: student_wiz
2 Replies
STRCSPN(3)						   BSD Library Functions Manual 						STRCSPN(3)

NAME
strcspn -- span the complement of a string LIBRARY
Standard C Library (libc, -lc) SYNOPSIS
#include <string.h> size_t strcspn(const char *s, const char *charset); DESCRIPTION
The strcspn() function spans the initial part of the nul-terminated string s as long as the characters from s do not occur in string charset (it spans the complement of charset). RETURN VALUES
The strcspn() function returns the number of characters spanned. EXAMPLES
The following call to strcspn() will return 3, since the first three characters of string s do not occur in string charset: char *s = "foobar"; char *charset = "bar"; size_t span; span = strcspn(s, charset); SEE ALSO
index(3), memchr(3), rindex(3), strchr(3), strpbrk(3), strrchr(3), strsep(3), strspn(3), strstr(3), strtok(3) STANDARDS
The strcspn() function conforms to ANSI X3.159-1989 (``ANSI C89''). BSD
August 11, 2002 BSD
All times are GMT -4. The time now is 07:54 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy