0

既存の文字列からサブ文字列を抽出しようとしていますが、セグメンテーション違反エラーが発生します。午前中は正常に実行されていましたが、なぜ今セグメンテーション違反が発生しているのかわかりません。誰か助けてください。

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

int main ()
{
  char str[] ="1017122,1,10,?,1,1";
  char * pch,*pch1;
  FILE *fp;
  char *str1,*str2;
  int noofattr=0;
  int strlen1;

  /*if(remove("abc.txt") != 0)
  perror("The file is successfully deleted.\n");
  else
  printf("Error in deleting the file.\n");
*/

  printf ("Splitting string \"%s\" into tokens:\n",str);
  pch = strtok (str,",");
  while(pch!=NULL)
  {
          if(strcmp(pch,"?")!=0)
          {
                strcat(str1,pch);
                strcat(str1,",");
          }
          else
          {
                strcat(str1,pch);
                strcat(str1,",");
          }
          pch = strtok (NULL,",");
          noofattr++;
  }


  strlen1=strlen(str1);
  //memcpy(str2,&str1,strlen1-1);
//  strncpy(str1,str1+0,strlen1-1);
  printf("\nThe formatted string is %s and its length is %d\n",str1,strlen1);
  printf("\nThe total no. of attributes except SCN are %d\n",noofattr);
  return 0;
}
4

2 に答える 2

1

str1メモリ内のランダムな場所を指します。それを試す前に、最終結果を保持するのに十分な大きさのバッファーに設定する必要があります (そうする必要があります) strcat

于 2012-09-12T06:10:27.450 に答える
0

あなたstr1は割り当てられていません。もちろん、セグメント違反が発生します。

于 2012-09-12T06:12:01.490 に答える