Sponsored Content
Top Forums Programming C: Initialize "const" array from the "heap" Post 302468338 by jim mcnamara on Tuesday 2nd of November 2010 11:57:26 AM
Old 11-02-2010
Here is simple code that uses a static storage are, referenced by a const char * which persists thru the duration of the code on the stack frame for main().

I really am unsure what you are trying to do; this is the best answer I can give you.

Code:
#include <stdlib.h>
#include <stdio.h>
#include <sys/stat.h>

static
char *tmp=NULL;

char *loadit(FILE *in, const int len)
{
    tmp=malloc(len+1);
    fread(tmp, len, 1, in);

    return tmp;
}

size_t filesize(int fd)
{
    struct stat st;
    fstat(fd, &st);

    return st.st_size;
}

int main(int argc, char **argv)
{
    FILE *in=fopen("filename", "r");
    int filelen=filesize(fileno(in));   
    const char *constmem = loadit(in, filelen);
    printf("%s\n", constmem); // assumes readable file content
    fclose(in);
    free(tmp);
    return 0;
}

as long as you pass the constmem pointer to subsequent functions, you have static const memory that was "dynamically" loaded. Add error checking.
 

9 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies

2. Shell Programming and Scripting

cat $como_file | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g'

hi All, cat file_name | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g' Can this be done by using sed or awk alone (4 Replies)
Discussion started by: harshakusam
4 Replies

3. Shell Programming and Scripting

ps -ef | grep "string1" "string2" " "string3"

Hi all, can any one suggest me the script to grep multiple strings from ps -ef pls correct the below script . its not working/ i want to print OK if all the below process are running in my solaris system. else i want to print NOT OK. bash-3.00$ ps -ef | grep blu lscpusr 48 42 ... (11 Replies)
Discussion started by: steve2216
11 Replies

4. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

5. Shell Programming and Scripting

how to use "cut" or "awk" or "sed" to remove a string

logs: "/home/abc/public_html/index.php" "/home/abc/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" how to use "cut" or "awk" or "sed" to get the following result: abc abc xyz xyz xyz (8 Replies)
Discussion started by: timmywong
8 Replies

6. Solaris

The slices "usr", "opt", "tmp" disappeared!!! Help please.

The system don't boot. on the screen appears following: press enter to maintenance (or type CTRL-D to continue)...I checked with format command. ... the slices "0-root","1-swap","2-backup" exist. ...the slises "3-var","6-usr" -unassigned. :( (16 Replies)
Discussion started by: wolfgang
16 Replies

7. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

8. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

9. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies
SoDebug(3)							       Coin								SoDebug(3)

NAME
SoDebug - SYNOPSIS
#include <SoDebug.h> Static Public Member Functions static const char * GetEnv (const char *var) static void RTPrintf (const char *formatstr,...) static void NamePtr (const char *name, void *ptr) static const char * PtrName (void *ptr) static void write (SoNode *node) static void writeToFile (SoNode *node, const char *filename) static void writeField (SoField *field) static void printName (SoBase *base) Detailed Description The SoDebug class is a small collection of debugging-related functions. Member Function Documentation const char * SoDebug::GetEnv (const char *var) [static] This is a portable getenv-wrapper. See also: coin_getenv() void SoDebug::RTPrintf (const char *formatstr, ...) [static] Real-time printf designed for use when use of standard printf() would cause timing problems. NOT IMPLEMENTED. Currently it just forwards to printf(). void SoDebug::NamePtr (const char *name, void *ptr) [static] Associate a name with an arbitrary pointer. You can fetch the name of the pointer later with PtrName(). See also: PtrName() const char * SoDebug::PtrName (void *ptr) [static] Returns the name set on a pointer with NamePtr(). If no name has been set, '<unnamed>' is returned. See also: NamePtr() void SoDebug::write (SoNode *node) [static] Writes the node to stdout. void SoDebug::writeToFile (SoNode *node, const char *filename) [static] Writes the node to the given filename, or /tmp/debug.iv if filename is NULL. void SoDebug::writeField (SoField *field) [static] Not implemented. void SoDebug::printName (SoBase *base) [static] Not implemented. Author Generated automatically by Doxygen for Coin from the source code. Version 3.1.3 Wed May 23 2012 SoDebug(3)
All times are GMT -4. The time now is 01:31 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy