如何用c语言实现 从一个文件以每个单词为单位 读取每一行 然后把每一行存入栈中,再反向输出到另一个文件

我不知道如何做到将 每个单词都读出来存进数组中,我写的这段 只能将每行第一个字符串读出来

#include <stdio.h>
#include <string.h>

typedef struct _StackData{
char *pdata;
_StackData *up;
_StackData *next;
}StackData;

typedef struct _Stack{
_StackData *head;
_StackData *last;
}Stack;

void initStack(Stack *s)
{
s->head=0;
s->last=0;
}

void push(Stack *s, char *p)
{
StackData *curr;
if(!s->last)
{
s->head=s->last=new StackData;
curr=s->last;
curr->up=0;
}
else
{
curr=s->last;
curr->next=s->last=new StackData;
s->last->up=curr;
curr=s->last;
}
curr->next=0;
curr->pdata=new char[strlen(p)+1];
strcpy(curr->pdata,p);
}

int pop(Stack *s, char *p)
{
StackData *curr;
if(!s->last)
{
return 0;
}
else
{
curr=s->last;
if(curr->up)
{
s->last=curr->up;
s->last->next=0;
}
else
{
s->head=s->last=0;
}
strcpy(p,curr->pdata);
delete[]curr->pdata;
delete[]curr;
return 1;
}
}

void freeStack(Stack *s)
{
StackData *curr,*curr2;
curr=s->head;
while(curr)
{
curr2=curr->next;
delete[]curr->pdata;
delete[]curr;
curr=curr2;
}
s->head=0;
s->last=0;
}

int main()
{
Stack s;
FILE *fp1,*fp2;
char str[1024],*x;
int b;

initStack(&s);

fp1=fopen("1.txt","r");
if(!fp1) return 0;
while(fgets(str,256,fp1)!=NULL)
{
x=strchr(str,'\n');
if(x) *x='\0';
push(&s,str);
}
fclose(fp1);

fp2=fopen("2.txt","w");
if(!fp2) return 0;
b=0;
while(pop(&s,str))
{
if(b)
{
printf(",");
fputs("\n",fp2);
}
printf("%s",str);
fputs(str,fp2);
b=1;
}
fclose(fp2);

freeStack(&s);
return 0;
}

温馨提示:答案为网友推荐,仅供参考
相似回答