C语言获取输入,按单词输出

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

int main(int argc,char *argv[])
{
    int num;
    printf("要输入的单词个数:");
    scanf("%d",&num);
    printf("请输入%d个单词:",num);
    char p[num][20];
    char ch;
    int i = 0;
    int j = 0;
    ch = getchar();
    while((ch=getchar())!='\n')
    {
        if(ch==' ')
        {
            p[j][i]='\0';
            j++;
            i=0;
        }else
        {
            p[j][i] = ch;
            p[j][i+1] = '\0';
            i++;
        }
    }
    int k;
    for(k=0;k<num;k++)
        puts(p[k]);
    return 0;
}

 malloc方法:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define SIZE 40
char **mal_ar(int n);

int main(void)
{
    int words, i, sum = 0;
    char **st;

    printf("您要输入几个单词: ");
    scanf("%d", &words);
    getchar();      // 滤掉回车
    printf("输入 %d 个单词:", words);
    st = mal_ar(words);
    printf("下面是您输入的单词: \n");
    for(i = 0; i < words; i++)
    {
        puts(st[i]);
        sum += strlen(st[i]) + 1;
    }
    printf("共占用%d字节空间\n", sum);

    free(st);           // 释放指针数组;

    return 0;
}

char **mal_ar(int n)
{
    char **pt;
    char *temp;
    int len;

    // 给n个指针分配动态内存空间, 返回指针的指针
    pt = (char**)malloc(n * sizeof(char *));
    // 临时数组分配动态内存空间, 返回指针
    temp = (char *)malloc(SIZE * sizeof(char));
    int i;
    for(i = 0; i < n; i++)
    {
        // 输入存入临时数组
        scanf("%s", temp);
        // 测量临时数组大小,分配正好存放的空间
        len = strlen(temp);
        // 给每个指针指向的地址分配内存空间
        pt[i] = (char *)malloc((len + 1) * sizeof(char));
        strcpy(pt[i], temp);
    }
    free(temp);
    return pt;
}

 

posted @ 2017-09-04 10:39  疯陈演义  阅读(1906)  评论(0编辑  收藏  举报