テキストファイルを読み込むものを作っているのですが…。
テキストに
田中 40 男
木村 28 男
中村 32 女
とある場合、名前の後から読み込んだり途中から
読み込むことってできますか??

#include <stdio.h>
#include <stdlib.h>
#include <memory.h> // memset に必要
#define MAX 20
#define ITEM 5
struct meibo{
unsigned char name[20];
unsigned long age;
unsigned char sex[5];
};
void main(void){
FILE *fp;
// char Filename[20];
char str[MAX];
unsigned long i, a, j = 0;
char age[20];
struct meibo list[ITEM];
memset( list, 0, sizeof(list) ); // 内容をゼロでクリアしておく
// ファイルをオープン(きめうち)
fp = fopen( "test.txt", "rt" );
while(fgets(str, MAX, fp) != NULL){
for(i = 0; str != ' '; i++){
list[j].name = str;
}
list[j].name = '\0';
memset( age, 0, sizeof(age) ); // age をゼロでクリア
for(i = i+1,a=0; str != ' '; i++,a++){ // インデックスがおかしい
// for(i = i+1; str = ' '; i++){
age[a] = str;
// list[j].age = atoi(str);
}
age[a] = '\0';
list[j].age = atoi(age); // 文字列をatoi
// list[j].age = '\0';
for(i = i+1,a=0; str != '\0'; i++,a++){
// for(i = i+1; str[i] != '\0'; i++){
list[j].sex[a] = str[i]; // list[j].sex[a] 配列がおかしい
// list[j].sex[i] = str[i];
}
list[j].sex[i] = '\0';
j++;
}
for(i = 0; i < j; i++){
printf("%s %lu %s", list[i].name, list[i].age, list[i].sex); // \n はしょり
// printf("%s %lu %s\n", list[i].name, list[i].age, list[i].sex);
}
fclose(fp);
}while(fgets(str, MAX, fp) != NULL){
sscanf(str,"%s %lu %s",list[j].name,&list[j].age,list[j].sex);
j++;
}
これだけで済みます。