zero.fafa
2021-10-14 21:39
采纳率: 100%
浏览 42

C语言关于文件的写入问题 为什么输入comm exit也无法退出

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
int main()
{
FILEfp=fopen("D:/a.txt","w");
char
p=(char*)malloc(sizeof(char)*1024);
while(1)
{
memset(p,0,1024);
fgets(p,1024,stdin);
if(!strcmp(p,"comm exit"))
{
break;
}
fputs(p,fp);
}
free(p);
fclose(fp);
return 0;
}

  • 好问题 提建议
  • 收藏

3条回答 默认 最新

  • CSDN专家-link 2021-10-14 21:41
    已采纳

    fgets(p,1024,stdin);
    改为:gets(p);

    已采纳该答案
    评论
    解决 1 无用
    打赏 举报
  • gets不会自动删除回车,所以匹配的时候要带上回车
    判断部分代码修改如下:
    有帮助望采纳~

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <time.h>
    int main()
    {
        // FILEfp=fopen("D:/a.txt","w");
        char *p = (char *)malloc(sizeof(char) * 1024);
        while (1)
        {
            fgets(p, 1024, stdin);
            printf("%s", p);
            if (!strcmp(p, "comm exit\n"))
            {
                printf("success");
                break;
                // fputs(p, fp);
            }
            }
        // fclose(fp);
        free(p);
        return 0;
    }
    

    img

    评论
    解决 1 无用
    打赏 举报
  • 闯入秋 2021-10-14 22:06

    fgets会把‘\n’也读进去,你直接这样把'\n'替掉
    fgets(p,1024,stdin);
    int size = strlen(p)
    p[size-1] = '\0';

    评论
    解决 1 无用
    打赏 举报

相关推荐 更多相似问题