2016-08-31 15 views
0

私は今、本当に絶望的です。 私のuniプロジェクトをすぐに実行しているときにこれらの奇妙なエラーが発生していて、どこにも出られないようです。 たとえば、私はfscanfを使ってtxtファイルを読み込もうとしていますが、それは奇妙なエラーを出すことに失敗します。これは、エラーとしてこれを与え、最後の行に失敗しEclipseとC++の奇妙なエラー

fp = fopen(filename, "r"); 
    if (fp == NULL) 
    { 
     if (df == 1) 
      printf("The default configuration file spcbir.config couldn't be open\n"); 
     else 
      printf("The configuration file %s couldn't be open\n", filename); 

     *msg = SP_CONFIG_CANNOT_OPEN_FILE; 
     return NULL; 
    } 
    result = (SPConfig) malloc (sizeof(SPConfig)); 
    if (result == NULL) 
    { 
     printf("Memory Allocation Error"); 
     fclose(fp); 
     *msg = SP_CONFIG_ERROR; 
     return NULL; 
    } 
    fillDefaults(result); 
    str = ""; 
    element = ""; 
    value = ""; 
    while (fscanf (fp, "%s\n", str) != 0) 

:ここ コードです http://imgur.com/a/qs6al

助けてください、これはのみを扱う多くのイムのうち最初のエラーです。

+0

スクリーンショットではなく、ここにテキストでエラーメッセージを入力する必要があります。これもチェックしましたか? http://stackoverflow.com/questions/5219081/eclipse-error-no-source-available-for – Hayt

+0

'result =(SPConfig)malloc(sizeof(SPConfig));'?あなたは完全なコードを投稿できますか? –

+0

http://stackoverflow.com/questions/5219081/eclipse-error-no-source-available-for –

答えて

1

ライン

result = (SPConfig) malloc (sizeof(SPConfig)); 

間違いなく怪しいです。 SPConfigがポインタ型であると仮定すると、オブジェクトを保持するのに十分な大きさではないポインタを保持するのに十分な大きさのメモリを割り当てています。

あなたが使用する必要があります。

result = (SPConfig) malloc (sizeof(*result)); 

またはいっその(あなたがC++の土地にあるので)、

result = new <<the object type>>; 
+0

正しい。私はそれを修正しました。コードの他の部分の問題を指しているfscanf – doria90

+0

@ doria90はまだありません。 [mcve]を投稿してください。 –

0

私がコメントを投稿することはできませんが、これはおそらくのためのソリューションではありませんあなたの問題ですが、私は完全なコードが表示されないので、ちょうど推測。あなたが好きSTRを定義したことに言及:

char* str; 

次に、あなたは(すなわち、ちょうど1バイトのバッファ:\ 0)「」のための空きメモリへのSTRを指します。ベターstrのためのスペースを割り当てるために、次のようになります。

char str[80]; // or whatever size you need 

、代わりの

str = ""; 

あなただけ割り当てられたスペースクリアする必要があります。

それともC++とstd :: getlineのを使用します()を使用してファイルストリームから読み取ります。