前提・実現したいこと
C言語でデータ文字列を変換し、構造体の配列に格納する関数を作ろうとしています。
プログラムを実行すると、ヘッダファイル内のsscanf関数の実行で動作が停止してしまいます。
正しく読み取りたいのですがどうすれば実現できるでしょうか?
発生している問題・エラーメッセージ
ヘッダファイル内のvoid set_data_studentの関数内にあるsscanfを実行中に問題が起きていることだけわかりました。
エラーメッセージ
Microsoft Visual C++ 2010 Express
Run-Time Check Failure #3 - The variable 'e' is being used without being initialized.
中断 継続 無視
該当のソースコード
C
1ソースコード
//mystack ヘッダファイルの一部
#ifndef MYSTACK_H
#define MYSTACK_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student
{
char name[12];
int math;
int eng;
};
//struct student構造体オブジェクトのメンバに値を格納する関数
struct student set_student(char n, int m, int e)
{
struct student ps = NULL;
ps = (struct student)malloc(1 * sizeof(struct student));
if(ps == NULL)
{
puts("記憶域の確保に失敗しました");
return NULL;
}
strcpy(ps->name, n);
ps->math = m;
ps->eng = e;
return ps;
}
/--データ文字列から数値や文字列にデータ変換をし構造体にまとめて管理する関数--/
void set_data_student(char *data[100], struct student *seito[100],int length)
{
char *n;
int m,e,i;
for(i=0;i<length;i++)
{
sscanf(data[i],"%s%d%d",&n[0],m,e);//<-ここでエラーとなりました
seito[i] = set_student(&n[0],m,e);
}
}
#endif
試したこと
ソースファイル内でset_data_student関数の引数には問題はないようでした。
補足情報(FW/ツールのバージョンなど)
Microsoft Visual C++ 2010 Express を使用しました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/17 17:16 編集
2018/06/17 18:03