c语言:动态输入字符串数组

考研题中经常会遇到给定一条英文句子,让我们对其每个单词进行操作,不同于对整型数据操作,字符串在c语言中必须存放到数组中,无形之中又给考题增加了难度

一般情况下,字符串数组都以二维数组或指针数组定义,而二维数组不能初始化为空,所以本文动态定义以指针数组为例,代码如下

#include<stdio.h>
#include<stdlib.h> //字符串数组默认可以用空格隔开!!!!
#include<string.h>
#include<malloc.h>
void main()
{ 
 char *a[5];   //这里的5并不是每个元素的长度,而是数组长度!!!
 int i,n;
 printf("请输入每个字符串最大长度:");
 scanf("%d",&n);
 printf("请输入字符串(以空格或回车隔开):");
 for(i=0;i<5;i++)
 { 
  a[i]=(char *)malloc(sizeof(char)*n);  //给每一个指针对应的字符串数组赋空间,我一开始思考过直接给所有字符串一起赋空间,发现没有办法分隔
  scanf("%s",a[i]);   //a[i]本来就是一个地址,不用再取地址
 }
 printf("倒序结果输出如下:");
 for(int j=4;j>=0;j--)  //倒序输出
 { 
 printf("%s ",a[j]);
 }
}


显然,c语言编译器的设计者早都意识到输入字符串数组不好分隔,所以帮我们提前定义好了可以以空格或回车分隔每个数组元素,这一点除了想要在字符串中加入空格需要自己手动添加以外,确实方便了不少。

编译结果如下:
《c语言:动态输入字符串数组》

    原文作者:事多做话少说
    原文地址: https://blog.csdn.net/no_pain_no_gain_/article/details/107297513
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞