[ create a new paste ] login | about

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

C, pasted on Nov 6:
/*想定しているdata.dat
001,ODA,NOBUNAGA,800
002,SHIBATA,KATSUIE,680
003,NIWA,NAGAHIDE,900
004,AKECHI,MITSUHIDE,900
005,MURAI,SADAKATSU,709
(要空行)
*/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define M_LENGTH 255
#define St_MAX 100
int main( int argc, char *argv[] ){
	FILE *fp;
	double res,ave=0;
	int i,j=0,len,size;
	char str[M_LENGTH];
	char *word[M_LENGTH],*cp,ch;
	const char *split = ",";

	struct GDATA {
	    int bango;
	    char sei[11],mei[11];
	    int tokuten;
	} data[St_MAX];

	if(argc == 1){
		printf("引数が無いか、多すぎます。ファイル名を入力してください。\n");
		getchar();
		exit(1);
	}
	if((fp = fopen(argv[1],"r")) == NULL){
		printf("%c ",argv[1]);
		printf("OPEN ERROR!\n");
		getchar();
		exit(1);
	}
	do{
		fgets(str,50,fp);
		if(!feof(fp)){
			cp = str;
		    for (len = 0; len < M_LENGTH; len++) {
			    if ((word[len] = strtok(cp, split)) == NULL)
					break;
			    cp = NULL;
			 }
			data[j].bango = atoi(word[0]);
			size = strlen(word[1]);
			for(i=0;i <= size;i++){
				data[j].sei[i] = word[1][i];
			}
			size = strlen(word[2]);
			for(i=0;i <= size;i++){
				data[j].mei[i] = word[2][i];
			}
			data[j].tokuten = atoi(word[3]);
			ave += atoi(word[3]);
			j++;
		}
	}while(!feof(fp));
	fclose(fp);
	printf(" _____________________________________________________\n");
	printf("|___________________学生レコード______________________|\n");
	printf("%s \t %-10s \t %-10s \t %s\n","学籍番号","名字","名前","得点");
	for(i=0; i!=j; i++)
		printf("%d \t %-10s \t %-10s \t %d\n",data[i].bango,data[i].sei,data[i].mei,data[i].tokuten);
	res = ave/j;
	printf("AVERAGE:%.1f\n",res);
	getchar();
	return 0;
}


Output:
1
引数が無いか、多すぎます。ファイル名を入力してください。


Create a new paste based on this one


Comments: