This is having "some problem" -- which some problem? Be specific.
Files don't work that way. You can't delete characters in the middle like a text editor to make it shrink. What pretty much everything does is create a new file, and replace the contents of the old one with it.
Don't use fscanf. It's got "features" most people would consider bugs. Use fgets and sscanf to avoid its buffering problems.
Code:
char buf[4096];
FILE *fpold=fopen("filename", "r");
FILE *fpnew=fopen("newfile", "w+");
while(fgets(buf, 4096, fp) != NULL) // Read all lines from filename one-by-one
{
int val;
char *last=(buf+strlen(buf))-1; // Point to last character
while(isspace(*last)) last--; // Loop backwards across the ending newline
while(isdigit(*last)) last--; // Loop backwards across digits
// 'last' now points to the first non-digit before the number.
last[0]='\0'; // Change it into a NULL.
last++; // Point to the character after, i.e. the number itself.
// 'buf' now points to the string and only the string,
// and 'last' points to the number and only the number.
sscanf("%d", &val); // convert string into integer
////////
// To alter the contents of the file, alter 'buf' or 'val' here.
////////
fprintf(fpnew, "%s %d\n", buf, val); // Write all contents back into 'fpnew'.
}
fclose(fpold);
// Now, if you really want to, you can re-open fpold as write, read lines one-by-one from fpnew, and write them back into fpold.
rewind(fpnew);
...
thanks to everyone for your earlier replies, but i have yet another problem with file i/o. i'm trying to read multiple lines with the same file, and have been using the following code to take in the first two lines from a file...
fscanf(fileptr, "%d %d %d %d %d %d\n", &n1, &n2, &n3, &n4, &n5,... (1 Reply)
I keep trying to use fscanf() and for some reason I can't get the syntax down and always get seg faults. I'm on a SunOS 5.5.1, and my current code looks like this:
int n1, n2, n3, n4, n5, n6;
/* open config file */
if (fileptr = fopen(filename,"r") == NULL) {
printf("couldn't open... (3 Replies)
I use fopen, fscanf, fclose to read a file. It can work well. since many files should be read, a function is created with the same code. But in the function, fscanf can not work well.
for example, the first line of the the file is: > filename
but the fscanf will give: 207/23/eee/34
it appears... (2 Replies)
hey guys, I'm working on a term project for a c/unix class. The basis of the program is that it will calculate the weight/balance of a plane. I'm hoping to have an input file as such:
"
Pilot weight:
Passenger weight:
baggage wieght:
etc
"
and the idea is that I'm trying to use... (2 Replies)
Hi
I have a file like that:
1 2 3 4 5 6 7 8
and I want print on stdout:
1 3 8
in other words i want choose what print out.
I was thinking to use fscanf as:
fscanf(file_in,"%d %d %d",&a, &b,&c);
but in this way i get:
1 2 3
Is there a solution using fscanf to obtain my... (2 Replies)
Hello,
I really would appreciate some help with a bash script for some string manipulation on an SQL dump:
I'd like to be able to rename "sites/WHATEVER/files" to "sites/SOMETHINGELSE/files" within the sql dump.
This is quite easy with sed:
sed -e... (1 Reply)
hi there...
i have a question regarding the fscanf function...
let's say i have a data:
1 2 3 4 5 6
7 8 9 1 2 3
4 5 6 7 8 9
1 2 3 4 5 6
how do i read only the first COLUMN, or the second COLUMN or the third COLUMN or etc....??????
thanks (1 Reply)
Hi
In the below query userreg.status returns a value of 1 (Active) or -1 (Non Active). Ideally, I would like to replace this automatically on the export so instead of getting 1 or -1 I get Active / Non Active.
Any help, as usual, would be greatly apprecited. (1 Reply)
Hi,
I have a set of files in a directory that I have to read and replace the first occurrence of a number with another dummy number. This is what I have so far but it does not seem to work. The files have lot of other data in each row and each data element is separated by ,@,
for file in... (13 Replies)
Discussion started by: scorpioraghu
13 Replies
LEARN ABOUT LINUX
curl_global_init_mem
curl_global_init_mem(3) libcurl Manual curl_global_init_mem(3)NAME
curl_global_init_mem - Global libcurl initialisation with memory callbacks
SYNOPSIS
#include <curl/curl.h>
CURLcode curl_global_init_mem(long flags,
curl_malloc_callback m,
curl_free_callback f,
curl_realloc_callback r,
curl_strdup_callback s,
curl_calloc_callback c );
DESCRIPTION
This function works exactly as curl_global_init(3) with one addition: it allows the application to set callbacks to replace the otherwise
used internal memory functions.
This man page only adds documentation for the callbacks, see the curl_global_init(3) man page for all the rest. When you use this function,
all callback arguments must be set to valid function pointers.
The prototypes for the given callbacks should match these:
void *malloc_callback(size_t size);
To replace malloc()
void free_callback(void *ptr);
To replace free()
void *realloc_callback(void *ptr, size_t size);
To replace realloc()
char *strdup_callback(const char *str);
To replace strdup()
void *calloc_callback(size_t nmemb, size_t size);
To replace calloc()
CAUTION
Manipulating these gives considerable powers to the application to severly screw things up for libcurl. Take care!
SEE ALSO curl_global_init(3), curl_global_cleanup(3),
libcurl 7.12.0 10 May 2004 curl_global_init_mem(3)