如何输入多组字符串c语言,求教大侠:如何输入一组字符串

求教大侠:怎么输入一组字符串?

各位大侠,小弟定义了一个char型指针数组,想用这个char型指针数组存一组字符串。可字符串输入总是出错:

12153375.jpg

代码如下:

#include 

#include 

#include 

#include "string.h"

#define P printf

#define S scanf

#define G getch();

#define R return(0);

int main(void)

{

int i,n=6;

char* str[6];  //定义一个char型指针数组,用于存6个字符串,如6个国家的英文名字

P("Input 6 country names:\n");

for (i=0;i

S("%s",&str[i]);//输入6个国家名,如:Canada Australia China Italy Germany France

//悲剧!!!出错! 去掉& 也不行。

for (i=0;i

{

P("%s \n",str[i]);//输出刚输入的6个国家名

}

G

R

}

哪位大侠如果不嫌烦,干掉上面那个问题后,能否告诉小弟,有木有办法实现:不定义数组长度,为所欲为地想输入多少字符串就输入多少字符串?不胜感激!!!小弟技术弱,凡帮小弟的,小弟下次去庙里拜佛时一定会给你祈福!

------解决思路----------------------

都学c++的人了,还用c语言的东西。跳不出这种思维,下面的代码自己试一下。

#include 

#include

#include

#include

using namespace std;

int main(void)

{

int i,n=6;

string str[6];  //定义一个char型指针数组,用于存6个字符串,如6个国家的英文名字

cout<

for (i=0;i

cin>>str[i];

for (i=0;i

{

cout<

}

cin>>str[0];

return 0;

}

------解决思路----------------------

你这样的宏定义,我也是第一次见到。。

不过你的问题很简单:

char* str[6];

这里面有 这里定义了指针,但是没有为指针分配空间。

你写成char str[6][100];就好了

------解决思路----------------------

引用:你这样的宏定义,我也是第一次见到。。

不过你的问题很简单:

char* str[6];

这里面有 这里定义了指针,但是没有为指针分配空间。

你写成char str[6][100];就好了

正解。

12153376.gif

------解决思路----------------------

//写出这样的代码只是说明你基础有问题。

2楼已经说出原因了,

char* str[6]; 你定义的是6个指针变量,你根本没有分配内存,可以说6个指针变量都是野指针;

S("%s",&str[i]);//这句就是问题关键,str[i]只是占用一个指针变量的内存,现在不指向任何内存,你让str[i]用什么接受你输入的字符串。

------解决思路----------------------

/*************************************************************************

> File Name: string_vector.cpp

> Author: Jukay

> Mail: hellojukay@gmail.com

> Created Time: 2014年10月30日 星期四 17时32分03秒

************************************************************************/

#include

#include

#include

using namespace std;

int main()

{

vector v;

string s;

for(int i=0; i 

{

cin >> s;

v.push_back(s);

}

for(auto a : v)

cout <

return 0;

}

不知道你学了C++ 没有啊

------解决思路----------------------

引用:Quote: 引用:你这样的宏定义,我也是第一次见到。。

不过你的问题很简单:

char* str[6];

这里面有 这里定义了指针,但是没有为指针分配空间。

你写成char str[6][100];就好了

正解。

12153376.gif+1

12153377.gif

------解决思路----------------------

引用:Quote: 引用:都学c++的人了,还用c语言的东西。跳不出这种思维,下面的代码自己试一下。

#include 

#include

#include

#include

using namespace std;

int main(void)

{

int i,n=6;

string str[6];  //定义一个char型指针数组,用于存6个字符串,如6个国家的英文名字

cout<

for (i=0;i

cin>>str[i];

for (i=0;i

{

cout<

}

cin>>str[0];

return 0;

}弱弱地问一句:最后那个 cin>>str[0]; 是什么作用?

呵呵,相当于getchar()

暂时停一下给你看下结果。

------解决思路----------------------

引用不定义数组长度,为所欲为地想输入多少字符串就输入多少字符串?内存和硬盘都是有限的,为所欲为, 想多了。

------解决思路----------------------

引用:如果你想实现,输入任意个数的字符串,则可以采用队列:

typedef struct Node

{

pNode next;

char str[100];

}Node,*pNode;

然后每添加一个字符串,就生成一个结点,为其动态的为分配堆空间。然后再把这个结点接到队尾。

你如果不太了解这个的话,建议还是看看数据结构相关的书,这是比较基础的用法。

不好意思,很久没用c了,这里结构体定义有错。

typedef struct Node

{

char str[100];

struct Node* next;

}Node,*pNode;

------解决思路----------------------

#include "iostream"

#include "string"

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

string str;

cin>>str;

cout<

system("pause");

return 0;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值