プログラムに問題があります: sprintf 関数でセグメンテーション違反が発生し続けますが、その理由がわかりません。バッファーは十分に大きく、ポインターを正しく渡していると思いますが、理由がわかりませんうまくいきません。
コードは次のとおりです。
呼び出し:
char dataBuff[100];
//same error with char *dataBuff=malloc(sizeof(char)*100);
//those vars were declared before
int tmpData[5]={TID,i,JobList[i].Num1,JobList[i].Op,JobList[i].Num2};
//here's the function that return the sigsegv error
BuildCMD(CALC,tmpData,0.f,dataBuff);
BuildCMD コード:
int BuildCMD(enum CMD cmd,int *values,float Res,char *dataBuff)
{
     switch(cmd)
     {//........
         case CALC:
         {
              //this line cause the error,it's just a formatted parameters list
              //note:same error with just 
              //sprintf(dataBuff,"abc");
              spritf(dataBuff,"0*;%d;%d;%d;%d;%d;%d;%.5f|\n",cmd,values[0],values[1],values[2],values[3],values[4],Res);
              break;
         }
      //........
    }
}
sprintf を使用して通常の定数文字列を保存しようとしても、同じエラーが発生するため、問題は「dataBuff」であると確信しています。それはただ...私が間違っていることを理解できません。前もって感謝します。
編集:関数ヘッダーとして解決された問題:
int BuildCMD(enum CMD cmd,int *values,float Res,char dataBuff[100])
sprintf 呼び出しとして:
sprintf(&dataBuff,"0*;%d;%d;%d;%d;%d;%d;%.5f|\n",cmd,values[0],values[1],values[2],values[3],values[4],Res);