回车 换行 字符串读取

①回车与换行
在Windows中:
‘\r’ 回车,回到当前行的行首,而不会换到下一行,如果接着输出的话,本行以前的内容会被逐一覆盖;’\n’ 换行,换到当前位置的下一行,而不会回到行首;

Unix系统里,每行结尾只有“<换行>”,即"\n";
Windows系统里面,每行结尾是“<回车><换行>”,即“\r\n”;
Mac系统里,每行结尾是“<回车>”,即"\r";
一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;
而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

在Windows中读取Windows文件,getchar和fgetc会把\r吃掉,只剩下\n,所以不处理的话跨平台时会出现许多错误

②字符读取
int getc(FILE* stream); 从流中读取一个字符,并以整型返回,当读取失败或读到文档末尾,
返回EOF,因为EOF是-1,-1没有对应的字符,所以返回值是整型而不是字符型
getc() 相当于 fgetc(stdin)

③字符串读取
char* fgets(char*, int, FILE*);
读取完整一行,char buf[maxn],最多能读取maxn-1个字符,末尾自动加上’\0’,不会出现越界情况
一旦读到回车符’\n’就会停止,并且把回车符作为最后一个有效字符读入,结尾添加’\0’
如果使用fgets() 读取文件的时候bufsize大于该行的字符总数加2(多出来的两个,一个保存文件本身的’\n’换行,
一个保存字符串本身的结束标识’\0’),文件并不会继续读下去,仅仅只是这一行读取完,随后指向文件的指针会自动偏移至下一行。
如果读到了maxn-1个字符,还没读到’\n’,那就不以’\n’+’\0’结尾,仅以’\0’结尾

gets()存在缓冲区溢出漏洞,在C11中已被删除,但仍可以使用,但要避免使用

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在进C语言读取回车处理时,我们需要了解两种情况:一种是在读取字符时忽略回车符,另一种是在读取字符串时忽略回车符。 对于第一种情况,我们可以使用getchar函数进处理。由于getchar函数在读取时会将回车符也当做普通字符读入,因此我们需要在读取时特判这两个字符并进跳过,避免影响处理结果。 对于第二种情况,我们可以使用fgets函数进处理。由于fgets函数会读取一整字符串,这就包括了回车符,因此我们需要在读取字符串后将其最后的回车符进处理,一般可以将其替为空字符。 除此之外,我们还可以使用scanf函数来读取特定格式的输入,如读取整数时可以使用%d格式,此时会自动忽略回车符。但是当读取字符或字符串时,我们需要自己进处理。 总之,在进C语言读取回车处理时,应该根据具体情况采用不同的方法,避免对程序的正确性造成影响。 ### 回答2: 在计算机编程中,回车是两个常见的字符,它们可以用于控制文本输入和输出的格式。在C语言中,读取回车的过程需要使用特殊的函数和一些技巧来处理。 首先,需要明确两个概念:回车回车是一种字符,通常表示为“\r”,它的作用是在输出中把光标移到首,一般搭配一个字符使用。是另一种字符,通常表示为“\n”,它的作用是在输出中,让光标移到下一首。通常,一个回车和一个会一起出现,表示将光标移到下一首。 在C语言中,使用scanf函数读取标准输入时,输入中的回车字符都会被读入缓冲区。如果不加处理,程序可能会出现意想不到的错误,因为缓冲区中可能还存在其他字符。 为了避免这种问题,可以使用getchar函数读取输入流中的每个字符,以判断输入是否结束。同时,还可以使用while循环和if语句来判断是否遇到回车字符,从而进处理。 另外,在输出文本时,也需要格外注意回车字符的处理。一般来说,可以使用printf函数输出字符串,但需要注意在字符串中添加特殊的转义字符“\r”和“\n”来表示回车。同时,还要特别注意符的处理,因为不同的操作系统会使用不同的符。 总之,处理回车符是C语言编程中一个常见的问题,需要注意使用相关函数和技巧来处理,以避免程序出现意想不到的错误。 ### 回答3: “回车”是指在计算机输入中使用的一种控制符号,通常用于表示文本文件中的结束或者的位置。在不同的计算机系统中,“回车”符号的表示方式可能有所不同,因此在读取文本文件时需要进特殊的处理。 在C语言中,可以使用fgets函数来读取文本文件中的内容,并使用“\n”来表示回车符号。具体的使用方式如下: char buffer[1024]; FILE* fp = fopen("example.txt", "r"); if(fp != NULL){ while(fgets(buffer, sizeof(buffer), fp)){ printf("%s", buffer); } fclose(fp); } 在上述代码中,我们首先打开了一个名为“example.txt”的文本文件,并使用fgets函数从文件中读取内容,将读取的结果存储在一个名为“buffer”的数组中。然后我们通过printf函数来输出读取的结果,并使用fclose函数来关闭文件流。 需要注意的是,在读取文本文件时,我们需要使用“二进制模式”或者“文本模式”来打开文件流,具体使用哪一种模式取决于目标文件的格式和操作系统的要求。同时,我们还需要注意使用正确的文件路径和文件名,避免出现文件读取失败或者读取错误的情况。 总之,在C语言中,读取回车符号需要使用特殊的控制符号“\n”,并结合fgets函数或者其他文件读取函数来实现。同时,为了保证文件读取的正确性和可靠性,我们需要选择适当的文件读取模式,并注意处理文件路径和文件名等相关信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值