【问题标题】:how to add new line character between #include<stdio.h> and int main() { }如何在 #include<stdio.h> 和 int main() { } 之间添加换行符
【发布时间】:2013-05-30 13:29:52
【问题描述】:

我正在编写一个程序,它使用 getchar() 将输入作为字符序列,并使用 fopen() 和 putc() 函数创建 pro.cpp 源代码文件。

当我编译这个程序创建的源代码文件时,它会产生错误。 如果我从新行开始 int main{},则可以解决此错误。所以我需要在#include 和 int main{ }

之间输入换行符

我不知道该怎么做。

#include<stdio.h> 
int main()
{
    FILE *fp;
    char pgm[100];
    char *p_pgm;

 p_pgm=pgm;

 printf("Enter the program as a input");

 while((*p_pgm=getchar())!=10)
     p_pgm++;

 *p_pgm ='\0';


 fp =fopen("e:\\pro.cpp","w");
 while(*p_pgm!='\0')
     putc(*p_pgm++,fp);  


 fclose(fp);


}

【问题讨论】:

  • 有什么原因不能使用 putc('\n',fp);
  • 当然,因为*p_pgm ='\0',底部的while循环永远无法执行,因为*p_pgm \0?
  • 但是您作为输入的程序不包含换行符吗?因为否则你只会获得第一行,就像在while循环中你找到'\n'时停止,这相当于ascii表示中的10,正如我在回答中所说的那样。
  • 10改成'\n';它们(可能)是相同的值,但'\n' 更清晰。

标签: c pointers io getchar


【解决方案1】:

当您找到换行符(ascii 代码 10)时,您将停止读取字符,然后将其替换为 '\0'。因此,如果您将其写入输出文件,它显然不包含任何换行符。您的程序使用的输入源是否没有换行符?

【讨论】:

  • 为什么要投反对票?如果您传递给程序的输入包含换行符('\n'),则不应手动添加它,因为 getchar 也会读取换行符。但是在你的while循环中,当你找到一个换行符时你会停止。所以你应该指定你的输入是怎样的,是全部在一行上,还是用所有的换行符正确传递?
猜你喜欢
  • 1970-01-01
  • 2012-08-26
  • 1970-01-01
  • 2019-12-19
  • 1970-01-01
  • 2014-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多