| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1435 人关注过本帖, 1 人收藏
标题:指针与字符串问题
取消只看楼主 加入收藏
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
结帖率:98.26%
收藏(1)
已结贴  问题点数:20 回复次数:5 
指针与字符串问题
#include<stdio.h>
#include<string.h>
void insert(char *str,char *sbustr,int i)
{ char *p,*q;
  int l_str,l_sbustr;
  l_str=strlen(str);
  l_sbustr=strlen(sbustr);
  p=str+i;
  q=str+l_str;
  while(q>=p)
  {
    *(q+l_sbustr)=*q;
    q--;
  }
  for(;*sbustr!='\0';sbustr++,p++)
  {
      *p=*sbustr;
  }
  puts(str);
}
main()
{ char *str="jinsiang";
  char *sbustr="**";
  int i;
  printf("请输入一个数:");
  scanf("%d",&i);
  insert(str,sbustr,i);
}
在这个程序里有一个问题,就是在char*str="jinsiang";这出问题了,我看了别人把这修改成了个字符数组char str[10]="jinsiang";
这样编译就是对的,我想知道为什么要这样修改呢???

谢谢大虾们了!
搜索更多相关主题的帖子: 指针 字符 
2009-10-19 10:46
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 3楼 m456m654
我用的是VC++6.0的,不能够通过。

愿用余生致力编程
2009-10-19 15:40
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 4楼 UserYuH
我觉得你说的不对,因为在计算机内存里不是把这个字符串存储在我申请的那个指针str里,而是计算机会自动在内存里开辟一个字符数组来存储这个字符串的,而str只是指向了这个字符数组的首地址。我的这个程序我只是觉得为什么会出现我说的那个问题,就是我定义了一个char *str="jinsiang";可是在调用函数的时候为什么就会出现错误了呢?为什么要定义一个字符数组就不会出现这样的问题呢?

愿用余生致力编程
2009-10-19 15:46
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 4楼 UserYuH
我有再次看了你的解说,你的意思是说如果我去改动str里面的内容就不对吗?为什么不能够改动呢?还有就是你说的11字节是怎么回事?你说的“你只给指针str定义"jinsiang" 9字节长度空间(还有个结束符),输出却是11字节长度空间”这个我不太懂,可以再详细点解释一下吗?谢谢了!

愿用余生致力编程
2009-10-19 15:53
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
你们谁能够给我系统讲一下动态分配空间到底应该什么时候用?谢谢了!

愿用余生致力编程
2009-10-19 15:55
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 10楼 UserYuH
谢谢了呀!

愿用余生致力编程
2009-10-20 12:04
快速回复:指针与字符串问题
数据加载中...
 
   



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

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