c语言读文件中的字符串遇到换行符跳出循环

jyxuan94 2016-04-01 11:20:36
struct NODE
{
char *arr[amount1];
NODE *next; //指向后继
};

int table_read(NODE *head)
{
int index=0;
FILE *fp;
NODE*p=head;
char create_name[amount];
char buffer[amount]={0};
printf(">>Please enter a file name\n>>");
gets(create_name);
fp=fopen(create_name,"r");
if (NULL==fp)
{
printf("cannot open the file!\n");
exit(0);
}
while (fscanf(fp,"%s",buffer)!=EOF)
{
p->arr[index] = (char *)malloc(strlen(buffer) + 1);
strcpy(p->arr[index],buffer);
if (fgetc(fp)=='\n')
{
p=p->next;
index=0;
}
else
{
index++;
}
}
fclose(fp);
return index;
}



发现fgetc(fp)根本读不到\n,应该是fscanf读不了\n
能不能让sscanf可以读到\n
...全文
763 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyxuan94 2016-04-05
  • 打赏
  • 举报
回复
谢谢大大们,上周问了之后自己解决了,忘记上来结帖了
小灸舞 版主 2016-04-01
  • 打赏
  • 举报
回复
fscanf遇到空格和换行时结束 楼主可以考虑用fgets
赵4老师 2016-04-01
  • 打赏
  • 举报
回复
int table_read(NODE *head)
{
    int index=0;
    FILE *fp;
    NODE*p=head;
    char create_name[amount];
    char buffer[amount]={0};
    printf(">>Please enter a file name\n>>");
    gets(create_name);
    fp=fopen(create_name,"r");
    if (NULL==fp)
    {
        printf("cannot open the file!\n");
        exit(0);
    }
    while (1)
    {
        if (NULL==fgets(buffer,amount,fp)) break;
        p->arr[index] = (char *)malloc(strlen(buffer) + 1);
        strcpy(p->arr[index],buffer);
        if (buffer[strlen(buffer)-1]=='\n')
        {
            p=p->next;
            index=0;
        }
        else
        {
            index++;
        }
    }
    fclose(fp);
    return index;
}
paschen 2016-04-01
  • 打赏
  • 举报
回复
windows下文本文件换行是用\r\n

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧