OJ演练--字符串读取及操作

读取多行字符串,以”end“为结束行

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
 * 读取多行字符串,以”end“为结束行
 */
int main()
{
    int i;
    int sum=0;
    char **str =(char **)calloc(1,sizeof(char *));
    for(i=0;i<200;i++){
        str[i] = (char *)calloc(10,sizeof(char));
        scanf("%s",str[i]);
        sum++;
        if(strcmp(str[i],"end")==0){
            break;
        }
    }

    //字符串拷贝
    char **str2 =(char **)calloc(1,sizeof(char *));
    for(i=0;i<sum;i++){ //sum为读取行数
        str2[i] = (char *)calloc(10,sizeof(char));
        memcpy(str2[i], str[i], strlen(str[i])+1);
    }

    for(i=0;i<sum;i++){
        printf("%s\n",str[i]);
        free(str[i]);
    }
    free(str);

    for(i=0;i<sum;i++){
        printf("%s\n",str2[i]);
        free(str2[i]);
    }
    free(str2);

    return 0;
}


读取n行字符串

#include<stdio.h>
#include<stdlib.h>
/*
 *读取b行字符串
 */
int main()
{
    int a,b;
    scanf("%d %d", &a, &b);

    int i;
    char **str =(char **)calloc(1,sizeof(char *));
    for(i=0;i<b;i++){
        str[i] = (char *)calloc(10,sizeof(char));
        scanf("%s",str[i]);
    }

    for(i=0;i<b;i++){
        printf("%s\n",str[i]);
        free(str[i]);
    }
    free(str);

    return 0;
}

针对每次读取都需要输出值时:

int main()  
{  
    int n,k,m;  
    while(scanf("%d%d%d",&n,&k,&m)&&n)  
    { 
        ...
        printf(...);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_15437629/article/details/79588204
今日推荐