[ create a new paste ] login | about

Link: http://codepad.org/hnwAbnWF    [ raw code | output | fork ]

C, pasted on Jul 26:
#include <stdio.h>
#include <string.h>
#define SIZE 100 //商品名の長さの上限。

/*
gcc 3.4.5
・tsvの読み込み、切り分け
・tsv。タブ区切りテキスト。csvのお仲間
・構造体の配列
・構造体の配列の内の一つを関数に渡して計算させる方法(fuckin' arrow)

*/

typedef struct
{
	char namae[SIZE]; // namae を入れる
	int kosu;
	int tanka;
	int uriage;
} syohin ;

void keisan(syohin *x) // (syohin x) ではダメ。仮のモンになるから実物(アドレス)を渡せ
{
	//<商品xの売り上げの計算>
	//x.uriage = x.kosu * x.tanka ; // fuck. (syohin x) では仮のものとなる。
	//printf("%s: %d\n", x.namae, x.uriage);//check 計算は合うが、ここだけのものになる。
	
	x->uriage = x->kosu * x->tanka ; // fukin7 great special arrows.
	
}

int main(int argc, char *argv[])
{
	// argv[1] の有無チェック
	char fname[64] ;
	strcpy(fname,argv[1]) ;
	printf ("tsv name: %s\n",fname) ;
	
	FILE *fp;
	char s[SIZE];
	int n1, n2;
	int ret; // fscanfの戻り値の受け取り用
	
	syohin shina[10] ; // 商品が100位あってもok。
	int sc = 0 ; // syohin counter
	
	
	// fairu yomikomi
	fp = fopen( fname, "r" ); // tsv open
	if( fp == NULL ){
		printf( "%s: ファイルが開けません\n", fname );
		return -1;
	}
	while( ( ret = fscanf( fp, "%s%d%d", s, &n1, &n2 ) ) != EOF ){
		// tsv は csv と違い、そのまま密着させてOK。
		// \tを挟むと、却って正常に動作しなくなる。読み込みが終わらなくなる。
		//printf( "record: %s %d %d\n", s, n1, n2 );
		
		//<商品別の個数と単価の代入>
		strcpy(shina[sc].namae,s) ;
		shina[sc].kosu = n1 ;
		shina[sc].tanka = n2 ;
		keisan(&shina[sc]) ; // (shina[sc]) ではダメ。アドレス(実物)を渡せks
		sc++;
	}
	fclose( fp );
	
	
	// hyouji
	int max = sc ;
	for (sc = 0; sc<max; sc++){
		printf( "%sの売り上げは%d円 \n", shina[sc].namae, shina[sc].uriage );
	}
	
	
	return 0;
}


Output:
1
Segmentation fault


Create a new paste based on this one


Comments: