Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   STRCAT problem (http://www.go4expert.com/forums/strcat-problem-t5103/)

Frusciante 4Jul2007 16:51

STRCAT problem
 
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.

DaWei 4Jul2007 17:15

Re: STRCAT problem
 
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.

Frusciante 4Jul2007 17:24

Re: STRCAT problem
 
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...

Frusciante 4Jul2007 17:50

Re: STRCAT problem
 
I got it...
I can use sprintf

PHP Code:

sprintf(filename"injection-%1d_%1d.txt"i,j); 


DaWei 4Jul2007 18:27

Re: STRCAT problem
 
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] ;
...


Frusciante 4Jul2007 19:20

Re: STRCAT problem
 
Good to know!
:)


All times are GMT +5.5. The time now is 22:36.