请问C语言指针赋值问题

char*oldTimeStr="";//全局变量char*token;//局部变量char*timeStr;//局部变量大意是我在一个循环里,将token赋给timeS... char *oldTimeStr=""; //全局变量

char *token; //局部变量
char *timeStr; //局部变量

大意是我在一个循环里,将token赋给timeStr,这个没有问题。这个token值的例子: 15/04/2013:00:00:02

for (n=0; n<7; n++) {
//n=3 Time,
if (n==3) {
timeStr = token;
}
}

自循环结束后作完处理,将timeStr赋给全局变量oldTimestr,用下边两种都得不到要得结果.
oldTimeStr = timeStr;
//strcpy(oldTimeStr,timeStr);

要怎样处理才行呢?先谢了
首先感谢各位的热心。我重新调试了一下,加了更多的调试代码,如下,当用oldTimeStr = timeStr赋值后,打印的代码 AFS_Production.c(141) 已经拿到了需要的东西,但是第二次循环开始后,值已经变了,见AFS_Production.c(41)。

Starting iteration 2.
Starting action AFS_Production.

AFS_Production.c(41): oldTimeStr beginbegin=cast.com
AFS_Production.c(84): oldTimeStr =cast.com, TimeStr = 15/04/2013:00:00:02

AFS_Production.c(100): oldTimeStr =15/04/2013:00:00:02
AFS_Production.c(141): oldTimeStr enened=15/04/2013:00:00:02

Ending action AFS_Production.
Ending iteration 2.

Starting iteration 3.
Starting action AFS_Production.

AFS_Production.c(41): oldTimeStr beginbegin=›3›3A
AFS_Production.c(84): oldTimeStr =1.1", TimeStr = 15/04/2013:00:00:03

AFS_Production.c(100): oldTimeStr =15/04/2013:00:00:03
AFS_Production.c(104): -------count =1
AFS_Production.c(141): oldTimeStr enened=15/04/2013:00:00:03
Ending action AFS_Production.
Ending iteration 3.
展开
 我来答
花花浪客
2013-04-28 · TA获得超过2069个赞
知道小有建树答主
回答量:792
采纳率:100%
帮助的人:712万
展开全部
首先,strcpy(oldTimeStr,timeStr);肯定是不行的,因为开始的时候,全局变量进行初始化成一个常量,char *oldTimeStr="";常量是不能被修改的,所以strcpy(oldTimeStr,timeStr);会出错
然后oldTimeStr = timeStr;也是不行的,因为timeStr是局部变量,具有一定的生存周期,在生存周期后果,这个指针指向的内容会无效,所以你直接把指针付给全局变量也不行。
正确的做法有很多,我给出2种:
1. 在定义全局变量的时候,定义为char oldTimeStr[100] = {0},这里100是个足够大的数,保证在任何时候都可以完全存放timeStr的值,这样可以使用strcpy(oldTimeStr,timeStr);了,这种情况适用于timeStr最大长度可知的情况;
2.一开始的时候,定义 char *oldTimeStr = NULL;
在给oldTimeStr赋新值的时候,使用malloc申请内存,然后复制字符串
if (oldTimeStr ) free(oldTimeStr);
oldTimeStr = (char*)malloc(strlen(timeStr)+1);
strcpy(oldTimeStr,timeStr)
这种情况适用于timeStr最大长度未知的情况
追问
试第一种方法,可以啦,哈哈。我原来也试过,就是没成功,也没找到哪里不对。

谢谢啦!
a525970280
2013-04-28 · TA获得超过1163个赞
知道小有建树答主
回答量:698
采纳率:40%
帮助的人:423万
展开全部
要是都在一个函数内是不会有问题的。
你的问题应该不在上面所述的部分。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-04-28
展开全部
既然timeStr是局部变量,那么在这个函数结束时,其内存空间会被释放。所以得不到你想要的结果!可以考虑动态分配内存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zsczsc1011
2013-04-28
知道答主
回答量:42
采纳率:0%
帮助的人:14.9万
展开全部
有没完整的程序
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
KummerWu
2013-04-28 · TA获得超过694个赞
知道小有建树答主
回答量:378
采纳率:0%
帮助的人:418万
展开全部
代码能全一点吗,从这个片段看不出你要干什么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式