-1

構造体の配列が適切に出力されない理由を誰か教えてもらえますか?

私が確信していない構造体に割り当てたメモリと関係があると思います!!

Mac osx マウンテン ライオン xcode 4 gcc の使用

完全に行き詰まった助けをありがとう!! (私はただの学生ですので、しばらくお待ちください!)

#include <stdio.h>
#include <limits.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>



typedef struct{
char* one;  
char* two;
 } Node;

 Node *nodes;
 int count = 0;


 //-----------------------------------------------------------------------
 void add(char *one,char*two){

 char x[40];
 char y[40];

 printf("reached..\n");

 strcpy(x,one);
 strcpy(y,two);


 printf("--> X: %s\n",x); 
 printf("--> Y: %s\n",y); 

 Node newNode;
 newNode.one = x;
 newNode.two = y;
 nodes[count]= newNode;

 count++;
 }
 //-----------------------------------------------------------------------

 //-----------------------------------------------------------------------
void print(){

 int x;
 for (x = 0; x < 10; x++)
 {
   printf("%d : (%s, %s) \n",x,nodes[x].one, nodes[x].two);
 }

 }

 //-----------------------------------------------------------------------

 //-----------------------------------------------------------------------
 void check(char **arg)
 {

if(strcmp(*arg, "Add") == 0)
{

add(arg[1],arg[2]);

}else if(strcmp(*arg,"print") == 0)
{

 print();
}else{
    printf("Error syntax Enter either: \n Add [item1][item2]\n OR \n print\n");
}

 }
 //-----------------------------------------------------------------------
 void readandParseInput(char *line,char **arg)
 {  

  if (fgets (line, 512, stdin)!= NULL) {  


  char * pch;
  pch = strtok (line," \n\t");
  int count = 0;
  arg[0] = pch;

  while (pch != NULL)
   {
   count++;
   pch = strtok (NULL, " \n\t"); 
   arg[count] =pch;
   }


}else{
printf("\n");
exit(0);
  }

 }

 //-----------------------------------------------------------------------

 int main() 
{


 int size = 100;
 nodes = calloc(size, sizeof(Node));

 int i;
 for(i = 0;i <100; i++){

 printf("%s , %s \n",nodes[i].one,nodes[i].two );
 // nodes[i].one = ".";
 // nodes[i].two = ".";
 }


 char  line[512];             /* the input line                 */
 char  *arg[50];              /* the command line argument      */

while (1) 
{ 
  readandParseInput(line,arg);
  if(arg[0] != NULL){
    check(arg);
    }

 }

return(0);
}
4

4 に答える 4

0
#include <stdio.h>
#include <stdlib.h>

typedef struct {
    char *fn;
}NAME;

#define NAME_LEN 20

int main()
{
    NAME name;

    name.fn = (char *) calloc(NAME_LEN, sizeof(char));

    strcpy(name.fn, "Namco");

    printf("Name: %s\n", name.fn);

    free(name.fn);

    return 0;
}

Cでこのような文字列を割り当てることはできません

newNode.one = x;
newNode.two = y;

newNode.one は何を参照していますか???

于 2013-04-11T19:32:38.620 に答える
0

at 機能追加

 newNode.one = x;
 newNode.two = y;

 newNode.one = strdup(x);
 newNode.two = strdup(y);
于 2013-04-11T22:51:33.433 に答える