#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_HEIGHT 5
#define MAX_WIDTH 9
#define MAX_DIRECT 30
typedef struct position_t position_t;
struct position_t {
char *position;
char *ptr;
};
int main(int argc, char *argv[])
{
int i;
FILE *fp;
char a[50], b[50], c[50], d[50];
position_t pos;
pos.position = malloc(sizeof(char) * 20);
for (i = 1; i < argc; i++) {
fp = fopen(argv[i], "r");
if (fp == NULL) {
fprintf(stderr, "cat: can't open %s\n", argv[i]);
continue;
}
fgets(a, 50, fp);
fgets(b, 50, fp);
fgets(c, 50, fp);
fgets(d, 50, fp);
fclose(fp);
while (1) {
int j = 0;
pos.position = 0;
pos.ptr = strtok(a, ",.; ");
while (pos.ptr != NULL) {
pos.position[j] = *pos.ptr;
j++;
pos.ptr = strtok(NULL, ",.; ");
}
printf("%c", pos.position[j]);
}
}
free(pos.position);
return 0;
}
ファイルから最初の行(START FOYER ELEVATORの内容)を読み込み、スペースで区切ってstrtokで分割し、それぞれの文字列をmalloc posに格納します。私が使用したい場所のどこにでも使用してください。誰かがこのコードを修正してもらえますか?mallocとstrtokの使い方は?
[mallocの返却についてのこの質問](http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc)を読むことをお勧めします。 –