| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1274 人关注过本帖
标题:字符串与指针,运行错误
只看楼主 加入收藏
风之梦
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2007-8-31
收藏
 问题点数:0 回复次数:15 
字符串与指针,运行错误

这是一个关于字符串的简单问题。本人自学中,无人点拔,望各位高手,拔刀相助,万分感激!
相互扶助,共同进步!
在附件中!深谢
//本程序的问题是,输出的字符串总是最后一个被输入的字符串,
//即x[0],[1]总是=[2],x[2]即最后输入的那个,运行一下就知道了,谢谢
#include<iostream.h>
#include<stdio.h>
struct str_opr//结构体,count记录x数组中元素的个数
{ //x为字符型指针数组
int count;
char*x[3];
};
void inition(str_opr*p)//对指针数组进行初始化
{
p->count=0;
int i;
for(i=0;i<3;i++)
p->x[i]="\0";
}
void insert(str_opr*p,char*q)//q接收一个字符串,并把这个字符串插入到x中
{
p->x[p->count]=q;
(p->count)++;
}
int main()
{
str_opr str;//定义了结构体变量
inition(&str);
char hj[20];int i;
char*q=hj;//q接收一个字符串数组
while(str.count!=3)//循环,是为了给x数组赋值
{
cout<<"请输入插入的名字"<<endl;
gets(q);//系统函数,从键盘输入字符串
insert(&str,q);
cout<<"插入成功"<<endl;
}
for(i=0;i<str.count;i++)//输出各个字符串
puts(str.x[i]);
cout<<str.count;
cout<<endl;
return 0;
}

搜索更多相关主题的帖子: 指针 字符 运行 简单问题 void 
2007-09-30 14:33
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 
str_opr str;这个能通过编译???????????

又刚发现一个大问题:iostream.h为头文件的代码,你发到C区来干嘛?

[此贴子已经被作者于2007-9-30 16:44:50编辑过]


偶学编程,也许本身就是一个错。。。
2007-09-30 16:14
hitzl
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-8-24
收藏
得分:0 
char hj[20];int i;
char*q=hj;//q接收一个字符串数组
因为q的首地址是hj,所以这个地址是被写死了。


void insert(str_opr*p,char*q)//q接收一个字符串,并把这个字符串插入到x中
{
p->x[p->count]=q;
(p->count)++;
}
于是在后边把q的地址传给结构指针时,这个q地址一直没有变化,改变的只是它的内容,于是输出结构指针内容你会看到该地址内容被踩2次。也就是最后一次字符串q的内容。



2007-09-30 16:52
zp_0409
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2006-6-4
收藏
得分:0 
指针学的不好,使劲看都看不懂
void inition(str_opr*p)//对指针数组进行初始化
{
p->count=0;
int i;
for(i=0;i<3;i++)
p->x[i]="\0";
}
p->x[i]="\0";什么意思?
不是指针数组(三个指针)吗?
给指针赋个"\0"是什么意思?
还有
指针是那样赋值的吗?
2007-09-30 17:05
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
struct str_opr
{
int count;
char*x[3]; 这里是不是应该空格一下`` char *x[3];
};



女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-09-30 17:14
hitzl
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-8-24
收藏
得分:0 
void inition(str_opr*p)//对指针数组进行初始化
{
p->count=0;
int i;
for(i=0;i<3;i++)
p->x[i]="\0"; //这里应该改为 p->x[i]="0"; 为指针数组初始化
}
这里实际给指针指向的字符串赋值,而不是给指针赋值


2007-09-30 17:39
风之梦
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2007-8-31
收藏
得分:0 
首先,谢谢各位的指导,真的非常感谢,大家都这么热心的帮我,我又学到了不少东西
2007-10-01 16:48
风之梦
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2007-8-31
收藏
得分:0 
回复:(hitzl)char hj[20];int i;char*q=hj;//q接收...
真的非常感谢你,帮我这么多,我自己就是搞不懂,又是自学,所以没有帮我
2007-10-01 17:25
man420323
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-10-1
收藏
得分:0 
回复:(zp_0409)指针学的不好,使劲看都看不懂void ...

结构体变量的复制方法,查下资料就知道了`。。
p->x[i]="\0";字符特有的复制方法,把结构体变量p的x[i]里的元素全都赋空值。


have nothing,but c and asp...
2007-10-02 00:53
SkyAngel
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-10-1
收藏
得分:0 
以下是引用man420323在2007-10-2 0:53:23的发言:

结构体变量的复制方法,查下资料就知道了`。。
p->x[i]="\0";字符特有的复制方法,把结构体变量p的x[i]里的元素全都赋空值。

我的天哪,你不知道还在误导别人。。。。。前面的也是。。。。


Sky Angel 平生四大恨:一恨菜鸟装**,二恨加班不给加班费,三恨猪肉涨价,四恨自来水是臭的
2007-10-02 01:02
快速回复:字符串与指针,运行错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017005 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved