专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

C语言有没有从文件中读取一起字符串的方法

发布时间:2011-06-28 11:51:51 文章来源:www.iduyao.cn 采编人员:星星草
C语言有没有从文件中读取一行字符串的方法
C语言,用传统的方法,谢谢!

以换行符作为结尾,并记录行号。

把得到的字符串存放在char数组中。


------解决方案--------------------
getline()
------解决方案--------------------

ssize_t getline(char **lineptr, size_t *n, FILE *stream);


------解决方案--------------------

getline有C++版本和linux下的C版本。
标准C函数:char *fgets(char *buf, int bufsize, FILE *stream);

------解决方案--------------------
fgets()就可以

FILE *fp;
char str[256];
fgets(str, 256, fp);
意思为从fp中读一行,放入str中

记录行号的话,设定个量计数就行了
------解决方案--------------------
fgets
可以
fscanf
更好[如果只需要获取行数 使用fscanf可以不考虑缓冲区大小的问题]
------解决方案--------------------
fgets是符合C语言最好的方法。

引用:
C语言,用传统的方法,谢谢!

以换行符作为结尾,并记录行号。

把得到的字符串存放在char数组中。

------解决方案--------------------
getline是C++的  6楼说的函数不错 不过似乎不能判断行
------解决方案--------------------
仅供参考
#include <stdio.h>
#include <string.h>
#define MAXLEN 1000
char ln[MAXLEN];
FILE *f;
int i,z;
int b,n,L;
int main(int argc,char **argv) {
    if (argc<2) {
        printf("Usage:%s fullpathfilename.ext\nget total blank/non-blank/total linenumbers.\n",argv[0]);
        return 1;
    }
    f=fopen(argv[1],"r");
    if (NULL==f) {
        printf("Can not open file [%s]!\n",argv[1]);
        return 2;
    }
    z=0;
    b=0;
    n=0;
    L=0;
    while (1) {
        if (NULL==fgets(ln,MAXLEN,f)) break;
        L=strlen(ln);
        if ('\n'==ln[L-1]) {
            if (0==z) {
                for (i=0;i<L-1;i++) {
                    if (!(' '==ln[i] 
------解决方案--------------------
 '\t'==ln[i])) break;
                }
                if (i<L-1) z=1;//当前行不是空行
            }
            if (0==z) b++; else n++;
            z=0;
        } else {
            if (0==z) {
                for (i=0;i<L;i++) {
                    if (!(' '==ln[i] 
------解决方案--------------------
 '\t'==ln[i])) break;
                }
                if (i<L) z=1;//当前行不是空行
            }
        }
    }
    fclose(f);
    if (L>0 && '\n'!=ln[L-1]) {
        if (0==z) b++; else n++;//最后一行末尾无'\n'也计算
    }
    printf("File:[%s] total blank/non-blank/total linenumbers is %d/%d/%d\n",argv[1],b,n,b+n);
    return 0;
}
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: