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; }