2014-11-11 2 views
0
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include "full_regr.h" 

int full_regr() 
{ 
    struct commands *s1=NULL;  
    s1 = (struct commands *)malloc(sizeof(struct commands));   
    Char *token1; 
    Char *token2;   
    char *char_frequency_cat; 
    char *frequency_array[100]; 

    for(j=0;j<=24;j++) 
    { 
     token1=strtok(s1->frequency[j],"."); 
     token2=strtok(NULL,".");   //rhs of frequency 
     if(!token2) //If decimal not placed in frequency 
     { 
      printf("\t\tFrequencySSM......:==== %s\n",s1->frequency[1]);**  /// it will print 1025 
      token1 = strcat(s1->frequency[j],"000000"); 
      printf("\t\tFrequencySSM......:==== %s\n",s1->frequency[1]);  // it will print 00000 
      char_frequency_cat= token1; 
      printf("\t\tin if char_freq: %s\n",char_frequency_cat); 
     }    

    } 
}   

출력된다 : 은 S1-> 주파수 [0] = 1012 S1-> 주파수 [1] = 0000 /// 값 I가 시도하고 1,025문자 포인터가 올바른 값을 인쇄하지

되어야 input.txt 파일에서 주파수 값을 읽습니다. 우리가 주파수에서 사용한 형식은 FREQ 1012,1025; 입니다.이 전체 코드는 for 루프에서 하나씩 각 주파수를 읽어서 추가 프로세스에 사용할 수있게하므로 문제는 첫 번째 주파수 즉 1012에서는 작동하지만 그걸로 strcat(s1->frequency[j])에오고 두 번째 주파수는 0이되고 세 번째 주파수가 증가하면 나는 아무것도 얻지 못합니다. char *frequency[1000]은 구조로 정의됩니다

+0

'struct commands'의 정의는 무엇입니까? 그리고'strcat()'호출이 연결 문자열을 넣는 위치에 대해 생각해 보셨습니까? – AAT

+0

struct 명령 { \t \t char * frequency [1000]; }; – ABC

+0

주파수를 MHz 단위로 만들기 위해 6 개의 0을 더하고 싶기 때문에 strcat를 사용했습니다. 그리고 strcat의 값은 token1에 저장 될 것입니다. 나는 각각의 줄 사이에 printf를 넣는다. – ABC

답변

1

s1malloc에 의해 할당 된 메모리를 가리 킵니다. 이것은 초기화되지 않았습니다.

초기화되지 않은 메모리를 strtok으로 구문 분석하면 정의되지 않은 동작이 발생합니다. "input.txt"파일을 읽고 싶다면 그것을 열고 읽어야합니다.

+0

나는 당신에게 코딩의 일부분만을주었습니다. intialization을 수행하고 input.txt 파일을 읽고 엽니 다. – ABC

관련 문제