STRCAT problem

Frusciante's Avatar, Join Date: Jul 2007
Light Poster
Hi!
I wanted to thank you a lot for the help given yesterday...
It`s so great to have people so well prepared trying to help you!

I have another problem: the bold line :
strcat want a pointer as argument, but probably i'm mistaking it ... can anybody help me?

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

main ()
{
int i;
char j;
char *ip;

for (i = 0; i < 10; i++)
    {
	ip=&j;
      for (j = 0; j<3; j++)
	  {
		FILE *fp;
		
      char filename[17] ;
	  
      if      (i == 0) 
		{
		 	strcpy(filename, "injection-0");
			if (j==0) strcat(filename,"_11.txt");
			else if (j==1) strcat (filename,*ip);
			else if (j==2) strcat (filename,"_12.txt");
		}
if ((fp = fopen(filename, "w")) != NULL)
		{
			fprintf(fp, "mass_part    mass_flow_part   diam_part      accretion      surf_ID   cel_ID    temp           vel_abs        vel_nor        vx             vy             vz             Ax             Ay             Az             Angle		Wa		Wb		Wc		WEAR\n");
			fclose(fp);
		}
	  }
    }
}
Edited by DaWei to add code tags. Please do this yourself, in future.
0
DaWei's Avatar, Join Date: Dec 2006
Team Leader
ip is a pointer to a char, not to an array of char (a string), as required by strcat.

You also have a potentially bad issue: unless you have a C99 compliant C compiler, you'll have problems if you declare variables down in the body of the code. For C code, put all your declarations at the top, before any runtime statements. Even if your compiler tolerates it, it isn't portable code. If you're writing C and compiling it as C++, that's not a Good Thang.

On the issue of formatting, please put your code in code tags, hereafter. Read the "Before you make a query" thread. I'd also recommend paying a little more attention to your formatting. Be consistent with your indentation. If you're planning on being a professional, someone else is going to wind up maintaining your code. They might be big, muscular, and mean.
0
Frusciante's Avatar, Join Date: Jul 2007
Light Poster
Thanks for your advices DaWei!
I will remember them!

Is it possible to concatenate just an int to the char filename?

In that case I would be safe...
0
Frusciante's Avatar, Join Date: Jul 2007
Light Poster
I got it...
I can use sprintf

PHP Code:
sprintf(filename"injection-%1d_%1d.txt"i,j); 
0
DaWei's Avatar, Join Date: Dec 2006
Team Leader
Just as a reminder, move the red statements to where shown in blue. This is a scoping issue that will affect portability of C code. It's great in C++.
Code:
main ()
{
int i;
char j;
char *ip;
FILE *fp;
char filename[17] ;
for (i = 0; i < 10; i++)
    {
	ip=&j;
        for (j = 0; j<3; j++)
	{
	    FILE *fp;
            char filename[17] ;
...
0
Frusciante's Avatar, Join Date: Jul 2007
Light Poster
Good to know!