#include<stdio.h>
#include<malloc.h>
#include<string.h>
typedef struct Art{
char str[100];
struct Art *next;
} abc;
abc *create()
{
abc *head;
head=(abc *)malloc(sizeof(abc));
head->next=NULL;
return(head);
}
int main()
{
FILE *fp;
abc *phead=NULL,*p1,*p2;
char s1[3]=",",s2[3]="。";//中文标点,用作判断。
char str1[500],ch;
int i=0,j=0,k=0;
fp=fopen("d:\\text.txt","r");
if (fp == NULL)
{
printf("文件打开失败,请检查文件名及路径是否正确、文件是否存在");
return 0;
}
ch=fgetc(fp);
while(ch!=EOF)
{
str1[i]=ch;
i++;
ch=fgetc(fp);
}
str1[i]='\0';
//前面这些是先将文件里的内容取出
fclose(fp);
p1=phead=create();
for(j=0;j<i;j++)
{
if((str1[j]==s1[0]&&str1[j+1]==s1[1])||(str1[j]==s2[0]&&str1[j+1]==s2[1]))
//中文是2个字节,所以比较的时候要同时比较两个字节是否相同,如果相同就是标点符号
{
p1->str[k]='\0';
k=0;
j+=1; //因为是标点,所以这里要跳过标点的字节,不然后面读进去的就是乱码
p2=p1;
p1=create();
p2->next=p1;
}
else
{
p1->str[k]=str1[j];
k++;
}
}
free(p1);//释放最后一个开辟的空间
p2->next=NULL;//尾结点指向NULL
p2=p1=phead;
if(p1!=NULL)
{
while(p1!=NULL)
{
printf("%s\n",p1->str);
p1=p1->next;
free(p2); //将已输出的结构体释放
p2=p1;
}
}
return 0;
}
多发一份你作为参考吧。
#include<malloc.h>
#include<string.h>
typedef struct Art{
char str[100];
struct Art *next;
} abc;
abc *create()
{
abc *head;
head=(abc *)malloc(sizeof(abc));
head->next=NULL;
return(head);
}
int main()
{
FILE *fp;
abc *phead=NULL,*p1,*p2;
char s1[3]=",",s2[3]="。";//中文标点,用作判断。
char str1[500],ch;
int i=0,j=0,k=0;
fp=fopen("d:\\text.txt","r");
if (fp == NULL)
{
printf("文件打开失败,请检查文件名及路径是否正确、文件是否存在");
return 0;
}
ch=fgetc(fp);
while(ch!=EOF)
{
str1[i]=ch;
i++;
ch=fgetc(fp);
}
str1[i]='\0';
//前面这些是先将文件里的内容取出
fclose(fp);
p1=phead=create();
for(j=0;j<i;j++)
{
if((str1[j]==s1[0]&&str1[j+1]==s1[1])||(str1[j]==s2[0]&&str1[j+1]==s2[1]))
//中文是2个字节,所以比较的时候要同时比较两个字节是否相同,如果相同就是标点符号
{
p1->str[k]='\0';
k=0;
j+=1; //因为是标点,所以这里要跳过标点的字节,不然后面读进去的就是乱码
p2=p1;
p1=create();
p2->next=p1;
}
else
{
p1->str[k]=str1[j];
k++;
}
}
free(p1);//释放最后一个开辟的空间
p2->next=NULL;//尾结点指向NULL
p2=p1=phead;
if(p1!=NULL)
{
while(p1!=NULL)
{
printf("%s\n",p1->str);
p1=p1->next;
free(p2); //将已输出的结构体释放
p2=p1;
}
}
return 0;
}
多发一份你作为参考吧。