c语言字符串字符交叉读入,C语言-输入任意个字符串

来源网站:

==== http://bbs.csdn.net/topics/391045349?page=1#post-399279449

方法一:

//输入任意个字符串

#include

#include

#include

#define LINE 5

int main()

{

int i = 0, n = LINE;

int l, len;

char **str;

char buf[256]; //每个字符串256个字符够吗?

//分配原始内存大小

if (NULL == (str =(char **)malloc(sizeof(char*)*n)))

{

fprintf(stderr, "can not malloc(%d*%d)\n", sizeof(char*), n);

return 1;

}

printf("请输入字符串:(字符串间换行,两个换行结束输入)\n");

while (1)

{

//输入字符串

fgets(buf, 100, stdin);

if ('\n' == buf[0]) break; //读入空行,结束

//内存已满,扩充

if (i == n)

{

n += LINE;

if (NULL == (str =(char **) realloc(str, sizeof(char*)*n)))

{

fprintf(stderr, "can not realloc(%d*%d)\n", sizeof(char*), n);

return 1;

}

}

len = strlen(buf);

buf[len - 1] = 0; //去'\n'

if (NULL == (str[i] =(char *)malloc(len - 1)))

{

fprintf(stderr, "can not malloc(%d)\n", len - 1);

return 1;

}

strcpy(str[i], buf);

i++;

}

//打印

printf("\n 你输入的字符串是:\n");

for (l = 0; l < i; l++)

printf("%s\n", str[l]);

system("pause");

return 0;

}

方法二:

#include

#include

#include

#include

int main()

{

char *str=NULL,**strs=NULL,*p;

unsigned int str_size=0,strs_size=0,i;

do

{

char *tmp=(char*)realloc(str,++str_size*sizeof(char));

if(!tmp)

{

free(str);

fputs("out of memory",stderr);

return 1;

}

str=tmp;

str[str_size-1]=getchar();

}while(str[str_size-1]!='\n');

str[str_size-1]=0;

for(p=strtok(str," \t");p;p=strtok(NULL," \t")) {

char **tmp=(char**)realloc(strs,++strs_size*sizeof(char*));

if(!tmp)

{

free(str);

free(strs);

fputs("out of memory",stderr);

return 1;

}

strs=tmp;

strs[strs_size-1]=p;

}

for(i=0;i

printf("%u:%s\n",i+1,strs[i]);

free(strs);

free(str);

return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值