|
发表于 2020-11-7 01:32:28
|
显示全部楼层
本帖最后由 jackz007 于 2020-11-7 02:15 编辑
很简单,每行文本的末尾本身都是自带换行符的。显示的时候再加一个换行符,于是,就空出一行来了。我想问楼主 2 个问题:
1、为何一定要动态开辟字符串存储空间,申请足够大的固定空间不简单吗?
2、整行读取文本文件为何不用 fgets() 函数,这个函数可以每次读取文件一整行的内容,用起来岂不更加简单方便?
- #include <stdio.h>
- #include <string.h>
- int main(int argc , char * argv[])
- {
- FILE * fp ;
- char s[2048] ;
- if(argc > 1) {
- if((fp = fopen(argv[1] , "r")) != NULL) {
- fgets(s , 2048 , fp) ;
- while(! feof(fp)) {
- s[strlen(s) - 1] = '\0' ; /* 去掉字符串末尾的换行符 '\n' */
- printf("%s\n" , s) ;
- fgets(s , 2048 , fp) ;
- }
- fclose(fp) ;
- } else {
- fprintf(stderr , "\n") ;
- fprintf(stderr , "无法打开文件 %s\n" , argv[1]) ;
- fprintf(stderr , "\n") ;
- }
- } else {
- fprintf(stderr , "\n") ;
- fprintf(stderr , "Usage : %s <目标文件>\n" , argv[0]) ;
- fprintf(stderr , "\n") ;
- }
- }
复制代码 |
|