Malloc - unlimited input from user

 
Thread Tools Search this Thread
Homework and Emergencies Homework & Coursework Questions Malloc - unlimited input from user
# 1  
Old 03-06-2013
Malloc - unlimited input from user

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted!

1. The problem statement, all variables and given/known data:

I'm trying to get an unlimited input of words with an unlimited number characters from the user using
malloc and pointer to pointer then printing the inputs if only the user inputted the word "end". Even if the user
presses enter, the program should still ask input until there is no "end" inputted.
Can you please help me, I don't know if I'm doing right.



2. Relevant commands, code, scripts, algorithms:


Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main () {

    char** pointer = malloc(sizeof(char**) * 5000);
    fgets(pointer, 5000, stdin);
    if (strncmp(pointer, "end", 5000) == 0) {
        puts(pointer);
        puts("\n");
    }
    return 0;
}



3. The attempts at a solution (include all code and scripts):



4. Complete Name of School (University), City (State), Country, Name of Professor, and Course Number (Link to Course):

AcSat QC Philippines, Mr. Jules Morcilla , CS13


Note: Without school/professor/course information, you will be banned if you post here! You must complete the entire template (not just parts of it).

Last edited by Scrutinizer; 03-07-2013 at 06:09 AM.. Reason: code tags
# 2  
Old 03-07-2013
You can look what one of your classmates got for replies here:
https://www.unix.com/unix-dummies-que...lp-malloc.html
# 3  
Old 03-07-2013
You're using too many *'s. Wherever you see * in front, imagine an [] at the end: ** would be an array of arrays.

sizeof(char **) doesn't make sense either. You want 5000 characters. How large is one character? sizeof(char). How large is 5000 of them? sizeof(char) * 5000.

Code:
char *buffer=(char *)malloc(sizeof(char)*5000);

Next, you don't need strncmp, strcmp() will do. fgets() and the like NULL-terminate their strings properly.

Last, how do you handle unlimited input? you can use realloc() to extend the size of an existing block of memory.

Code:
buffer=realloc(buffer, 10000*sizeof(char));

You can even call realloc() on a NULL pointer(pointer to nothing) -- it will know to just give you fresh data. So you can just run the exact same code every loop, the first time isn't anything special.

So:

Code:
int main(void)
{
        int pos=0; // pos:  how many bytes have been read already
        int size=0; // size:  how large the buffer is
        char *buffer=NULL; // The data buffer

        buffer=realloc(buffer, pos+5000); // Add 5000 more bytes.
        if(buffer == NULL)
        {
                printf("out of memory\n");
                return(1);
        }
        size=pos+5000; // We need 5000 bytes past the end of the last data
        fgets(buffer+pos, 5000, stdin); // Read it 'pos' bytes past the start of the buffer, to add to the end
        pos=strlen(buffer); // How long is the data in the buffer now?
}

# 4  
Old 03-07-2013
Thanks to all, this forum really helps.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Red Hat

Ulimit -c unlimited

I was trying to generate core dump of a process.But it is not generated. While digging up the issue I found that Core File Size is set to 0. I set it with #ulimit -c unlimited.After that I found the core file size is set to 0 (ulimit -a).I exit that session and again logged in.But found the core... (12 Replies)
Discussion started by: Anjan Ganguly
12 Replies

2. Shell Programming and Scripting

User input and run awk using the input

I am trying to allow a user to enter in text and then store that text in a variable $gene to run in an awk command in which those values are used to run some calculations. I am getting syntax errors however, when I try. Thank you :). The awk runs great if it is a pre-defined file that is used,... (7 Replies)
Discussion started by: cmccabe
7 Replies

3. Shell Programming and Scripting

Script interacts with user , based on user input it operates

i have a script which takes input from user, if user gives either Y/y then it should continue, else it should quit by displaying user cancelled. #!/bin/sh echo " Enter your choice to continue y/Y OR n/N to quit " read A if then echo " user requested to continue " ##some commands... (7 Replies)
Discussion started by: only4satish
7 Replies

4. Solaris

HOW to set unlimited login attempts for user in Solaris?

Hi Admins, HOW to set unlimited login attempts for user in Solaris ? And do I need to insatll any packages before doing this? Thanks. (1 Reply)
Discussion started by: manalisharmabe
1 Replies

5. Shell Programming and Scripting

How to get the user input recursively until the user provides valid input

Hi, echo "Enter file name of input file list along with absolute path : " read inputFileList if then for string in `cat inputFileList` do echo $string done else echo " file does not exist" fi From the above code, if the user enters a invalid file... (1 Reply)
Discussion started by: i.srini89
1 Replies

6. HP-UX

ulimit -c unlimited

Hi, I want to set the coredump to unlimited, but it seems it does not work. > ulimit -a time(seconds) unlimited file(blocks) unlimited data(kbytes) 1048576 stack(kbytes) 131072 memory(kbytes) unlimited coredump(blocks) 4194303... (1 Reply)
Discussion started by: mr_andrew
1 Replies

7. UNIX for Advanced & Expert Users

set Ulimit data segment to Unlimited

Hi, as per my Unix admin all parameters in Ulimit are set to Unlimited in Hard limits but some how few profiles setting data segment part to limited number value. So i wanted to over write in my profile to set unlimited as hard limits are set to unlimited. What is the command to set ulimit for... (1 Reply)
Discussion started by: terala_s
1 Replies

8. Shell Programming and Scripting

Getting user input

I am trying to create a shell (ksh) which has two "read" commands, one which reads a line from a file and another which is inside a loop that reads user input from a keyboard. However, the "read" command inside the loop uses the input from the file and it does not get the user input from keyboard.... (3 Replies)
Discussion started by: stevefox
3 Replies

9. UNIX for Dummies Questions & Answers

setting unlimited filesize for a filesystem in

All, How can I enable largefiles in one of the filesytems in Sun OS 5.9 ? ls -l -rw-r--r-- 1 oracle dba 2548163397 Dec 3 02:57 TT_TT_full.dmp.Z cp -p TT_TT_full.dmp.Z /exports/tt/ cp: TT_TT_full.dmp.Z: File too large ulimit -a time(seconds) unlimited file(blocks) ... (1 Reply)
Discussion started by: win_vin
1 Replies
Login or Register to Ask a Question