環境はUbuntu Feisty Fawn
gcc 4.1.2
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 32
#define DEBUG
struct node{
char *moji;
struct node *left,*right;
};
typedef struct node NODE;
void error(char *msg){
fflush(stdout);
fprintf(stderr, "%s\n", msg);
exit(1);
}
NODE *createNode(char *x){
NODE *new;
new = malloc(sizeof(NODE));
if(new == NULL){
error("メモリがありません。\n");
}
new->moji = x;
new->left = NULL;
new->right = NULL;
return new;
}
NODE *insertNode(NODE *p, char *x){
if(p == NULL){
p = createNode(x);
}else if(strcmp(p->moji, x) == 0){
return NULL;
}else if(strcmp(p->moji, x) > 0){
p->left = insertNode(p->left, x);
}else{
p->right = insertNode(p->right, x);
}
return p;
}
void printTree(NODE *p){
if(p == NULL)
return;
printTree(p->left);
printf("%s\n",p->moji);
printTree(p->right);
}
int main(int argc, char *argv[]){
FILE *fp;
char *buf = malloc(sizeof(char) * MAX);
char *ans = malloc(sizeof(char) * MAX);
NODE *p = malloc(sizeof(NODE));
if( argc > 2 ){
printf("ファイルの指定は一つだけです。\n");
return -1;
}else if(argc == 1){
printf("ファイルを指定してください。\n");
return -1;
}
fp = fopen( argv[1] , "r" );
if( fp == NULL ){
printf("ファイル読み込みに失敗しました。\n");
return -1;
}
while(fscanf(fp,"%s",buf) == 1){
ans = strtok(buf," -,.");
p = insertNode(p, ans);
while(ans != NULL){
ans = strtok(NULL," -,.");
if(ans != NULL){
p = insertNode(p, ans);
}
}
}
printTree(p);
fclose(fp);
return 0;
}
このファイルを読み込んで記憶させたいんです。
file.txt ここから下がファイルの中身
The Java programming language is a general-purpose,
concurrent, class-based, object-oriented language.
It is designed to be simple enough that many
programmers can achieve fluency in the language.
どこがいけないとおもいますか?
お礼
はい、ちょっと部分部分で質問があるので質問方法変えてみます。