c - 文件名字符串错误

标签 c string file fputs

我在使用下面的代码时遇到了一些麻烦,我终其一生都无法弄清楚出了什么问题以及为什么它会显示它所做的事情,我们将不胜感激。它应该允许输入 5 行文本并在屏幕上显示这 5 行,但它只允许输入 4 行,并显示 4 行。请帮忙!

#include <stdio.h>

int main()
{
char string[100];
char filename[20];
int n=0;
FILE *fp;
printf(" Enter the name of file to open ");
scanf("%s",filename);
fp =fopen(filename,"wr");
if(fp==NULL)
{
    printf("unable to open File");
}
for(n=1;n<6;n++)
{
    printf("\nEnter line %d:",n+1);
    gets(string);
    fputs(string,fp);
    fputs("\n",fp);
}
fclose(fp); /*close the file*/
fp =fopen(filename,"r");
if(fp==NULL)
{
    printf("unable to open File");
}
for(n=1;n<6;n++)
{
    fgets(string,100,fp);
    printf("%s",string);
}
fclose(fp); // close after reading.
return 0;
}

最佳答案

问题是 scanf("%s", filename); 不使用文件名后的换行符。因此,您对 gets() 的第一次调用会将此换行符读取为空行。

添加:

gets(string);

在开始阅读输入行之前,在该行之后用完该行的其余部分。

关于c - 文件名字符串错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17204769/

相关文章:

c# - c#中的左函数

java - Boggle 求解器的实现

c# - 使用 C# 控制台应用程序将一个大的 XML 文件一分为二

c - 我需要帮助将 C 代码转换为 MPI

c - C 问题 : Vacated Bits Not 0 When Shifting ~0? 中的右移无符号整数

c++ - 像在早期 C 中一样在开始时声明所有范围局部变量的编译含义?

c++ - 读取 txt 文件并将值放入列表中 (c++)

c - 有没有办法与字符串指针进行比较而忽略大小写?

string - 暴力字符串模式匹配平均分析

java - 如何在 Eclipse 正则表达式搜索中首先匹配检查前驱?