c读取一行字符串,以及c++读取一行字符串

一 c读取一行字符串

1 gets

#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  

int main()  
{  
    int size = 1024;   
    char* buff = (char*)malloc(size);  

    // read lines  
    while(NULL != gets(buff)){  
        printf("Read line with len: %d\n", strlen(buff));  
        printf("%s", buff);  
    }  

    // free buff  
    free(buff);   
}  

利用getchar()读取一个个字符来读取一行

#include <stdio.h>  
#include <stdlib.h>  

int my_getline(char* line, int max_size)  
{  
    int c;  
    int len = 0;  
    while( (c = getchar()) != EOF && len < max_size ){  
        line[len++] = c;  
        if('\n' == c)  
            break;  
    }  


    line[len] = '\0';  
    return len;  
}  

int main()  
{  
    int max_size = 1024;  
    char* buff = (char*)malloc( sizeof(char) * max_size );  

    //getline  
    int len;  
    while(0 != (len = my_getline(buff, max_size))){  
        printf("Read line with len: %d\n", len);  
        printf("%s", buff);  
    }  

    free(buff);  
}  

二 c++读取一行字符串

cin.get()和cin.getline()

#include<iostream>

using namespace std;

int main()
{

    cout << "----------getline忽略'\\n-----------------" << endl;
    char str0[30], str1[30];
    cin.getline(str0, 30);
    cin.getline(str1, 30);
    cout << "str0:" << str0 << endl;
    cout << "str1:" << str1 << endl;

    cout << "---------利用get()消除get()遗留下来的'\\n'-------" << endl;
    char str2[30], str3[30];
    cin.get(str2, 30).get();   // 注意这里!
    cin.get(str3, 30).get();
    cout << "str1: " << str2 << endl;
    cout << "str2: " << str3 << endl;

    cout << "--------没消除get()遗留下来的'\\n'就被下一个get()读取了,所以str5输出为空-----" << endl;
    char str4[30], str5[30];
    cin.get(str4, 30);   // 注意这里!
    cin.get(str5, 30);
    cout << "str4: " << str4 << endl;
    cout << "str5: " << str5 << endl;
    return 0;

}

本文链接:https://blog.csdn.net/qq_16949707/article/details/71440875

猜你喜欢

转载自blog.csdn.net/liuqingsongmsdn2014/article/details/108978571
今日推荐