• R/O
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

練習用です。いろんなものがごちゃまぜです。


Commit MetaInfo

Revision21 (tree)
Time2015-08-25 10:19:38
Authorbellyoshi

Log Message

Change Summary

Incremental Difference

--- vs2015/3_2/test04.c (nonexistent)
+++ vs2015/3_2/test04.c (revision 21)
@@ -0,0 +1,83 @@
1+#define _CRT_SECURE_NO_WARNINGS
2+#include <stdio.h>
3+#include <stdlib.h>
4+#include <string.h>
5+
6+#define MAX_CHAR 1024
7+#define SUCCESS 0
8+#define ERROR_ARGUMENT_NUMBER 1
9+#define ERROR_CANNOT_OPEN_FILE 2
10+#define ERROR_CANNOT_CLOSE_FILE 3
11+
12+char *ErrorMessage[4] = {
13+ "成功",
14+ "ファイル名を指定してください。",
15+ "ファイルを開けませんでした。",
16+ "ファイルを閉じれませんでした。"
17+};
18+
19+int main(int argc, char* argv[]){
20+ FILE *fp;
21+ int i = 0;
22+ char buffer[MAX_CHAR];
23+ char c;
24+ char **line = NULL,**lineInitialValue = NULL;
25+ int lineCount = 0;
26+ int result = SUCCESS;
27+
28+ if (argc != 2){
29+ result = ERROR_ARGUMENT_NUMBER;
30+ } else {
31+ fp = fopen(argv[1], "r");
32+ if (fp == NULL) {
33+ result = ERROR_CANNOT_OPEN_FILE;
34+ } else {
35+ while ( NULL != fgets(buffer, MAX_CHAR, fp)){
36+ lineCount++;
37+ }
38+ rewind(fp);
39+ lineInitialValue = (char **)calloc(lineCount, sizeof(char *));
40+ line = lineInitialValue;
41+
42+ while (EOF != (c = getc(fp))) {
43+ if ( (c == '\n') || ((c == EOF) && (i != 0))) {
44+ if ( c == EOF){
45+ i--;
46+ } else {
47+ buffer[i] = c;
48+ }
49+ buffer[i + 1] = '\0';
50+ *line = (char*)malloc(i + 2);
51+ strcpy(*line, buffer);
52+ line++;
53+ i = 0;
54+ } else {
55+ buffer[i] = c;
56+ i++;
57+ }
58+ }
59+ if ( 0 != fclose(fp)){
60+ result = ERROR_CANNOT_CLOSE_FILE;
61+ }
62+ }
63+ }
64+
65+ line = lineInitialValue;
66+ for (i = lineCount - 1; i >= 0; i--){
67+ printf(line[i]);
68+ }
69+
70+ for (i = 0; i < lineCount; i++) {
71+ if (line[i]) {
72+ free(line[i]);
73+ }
74+ }
75+ if (lineInitialValue) {
76+ free(lineInitialValue);
77+ }
78+
79+ if (result != SUCCESS){
80+ printf("%s\n", ErrorMessage[result]);
81+ }
82+ return result;
83+}