| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 833 人关注过本帖
标题:字符串与指针
只看楼主 加入收藏
duzhiming
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2012-2-13
结帖率:62.07%
收藏
已结贴  问题点数:20 回复次数:12 
字符串与指针
高手指点迷津 不甚感激啊
................   
char *Name;

   char Svariable[20];
   gets(Svariable);//判断字符串函数
   Name=&Svariable[20];

    printf("%s",Name);
............
还有个问题就是 我用指针指向了数组 但是这个数组字符串 怎样和 char *c ;字符串做比较啊
要用来判断 Name 及输入的字符串 是否与 char *c相等
如果为true 就print
如果为false就输出 一个 #error 的错误信息
在打印输出的时候 为什么总是出现 ASCII 中得 018符号 和 阿拉伯数字4 为什么?并且Name这个指针所指的数组内容可以输出 那两个ASCII符号 是在多余的另外一行
还有个问题 就是 输入的字符串数组Name 怎样和一个 char *C 进行比较 我要用if来判断

[ 本帖最后由 duzhiming 于 2012-2-28 14:59 编辑 ]
搜索更多相关主题的帖子: 函数 数字 阿拉伯 字符串 
2012-02-28 10:54
icysky
Rank: 5Rank: 5
来 自:心灵世界
等 级:职业侠客
威 望:1
帖 子:172
专家分:399
注 册:2011-5-17
收藏
得分:0 
Name=&Svariable[20];

这一句    下标就已经开始越界了

Name    = Sariable

不管怎么走、总有一个终点...
2012-02-28 10:58
duzhiming
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2012-2-13
收藏
得分:0 
回复 2楼 icysky
没有吧   不加的话  编译过不了

[ 本帖最后由 duzhiming 于 2012-2-28 11:13 编辑 ]
2012-02-28 11:11
icysky
Rank: 5Rank: 5
来 自:心灵世界
等 级:职业侠客
威 望:1
帖 子:172
专家分:399
注 册:2011-5-17
收藏
得分:0 
回复 3楼 duzhiming
程序代码:
#include <stdio.h>
#include <string.h>

void main()
{
    char *Name;

   char Svariable[20];
   gets(Svariable);//判断字符串函数
   Name=Svariable;

    printf("%s",Name);

}


Name=&Svariable[20];
这一句  取的是第21个元素的地址    这个数组总共就20个 元素   0-19  


[ 本帖最后由 icysky 于 2012-2-28 11:26 编辑 ]

不管怎么走、总有一个终点...
2012-02-28 11:25
duzhiming
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2012-2-13
收藏
得分:0 
回复 4楼 icysky
我在这里试了一下
    char *Name;
    char Svariable[10];
    yy=gets(Svariable);//判断字符串函数
    Name=yy;
   
//    strcmp(o,i);
    printf("%s\n",Name);
这样也是可以的 也能输出我要的结果

    char *Name;
    char Svariable[10];
    yy=gets(Svariable);//判断字符串函数
Name=&Svariable[0];   
//    strcmp(o,i);
    printf("%s\n",Name);

这样也行  为什么??

[ 本帖最后由 duzhiming 于 2012-2-28 13:08 编辑 ]
2012-02-28 13:06
duzhiming
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2012-2-13
收藏
得分:0 
回复 5楼 duzhiming
OK 明白了
还有一个问题
就是 我用指针指向了数组 但是这个数组字符串 怎样和 char *c ;字符串做比较啊
要用来判断 Name 及输入的字符串 是否与 char *c相等
如果为true 就print
如果为false就输出 一个 #error 的错误信息

现在关键是第一步 没有做出来 就是     针指向了数组 但是这个数组字符串 怎样和 char *c ;字符串做比较啊


[ 本帖最后由 duzhiming 于 2012-2-28 13:13 编辑 ]
2012-02-28 13:09
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:20 
如果输满20个字符  printf("%s",Name); 输出的是空字符。 其他的无法预知。
字符串
程序代码:
#include <stdio.h>
#include <string.h>

int main(void)
{
    char *c = "try again!";
    char Name[20];

 
    gets(Name);
    if (!strcmp(c, Name))
    {
        printf("true -->");
        puts(Name);
    }
   else printf("error!\n");
  
   return 0;
}
比较

梅尚程荀
马谭杨奚







                                                       
2012-02-28 14:27
duzhiming
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2012-2-13
收藏
得分:0 
回复 7楼 有容就大
这应该是我想要的结果了 但是
strcmp 这么函数 ——字符串的比较

能告知一下 怎样比较么 我查了 baidu了一下 我都不是很明白
strcmp(a,b);
这两个字符串 怎样比较的 似乎说是 从做到右一个一个比较 如果相等就是true 有一个不同就是flase 是这样的么  

2012-02-28 15:04
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
两个串一样返回零,不一样返回正或者负(仔细看函数介绍)不是用TRUE 和 FALSE 来判定的。

梅尚程荀
马谭杨奚







                                                       
2012-02-28 15:10
纯情小郎君
Rank: 2
等 级:论坛游民
帖 子:84
专家分:80
注 册:2011-12-12
收藏
得分:0 
回复 8楼 duzhiming
字符串是逐个比较的,全部相等的话返回值是0,遇到相应字符不相等就返回差值。
下面是字符串处理函数原型,你看看应该可以明白:
程序代码:
int strcmp(const char*s1,const char*s2)
{int i=0;
while(s1[i]!='\0'&&s2[i]!='\0')            //不到结束标识符循环
{if(s1[i]!=s2[i]) break;i++;}
if(s1[i]>s2[i]) return 1;else ifs1[i]<s2[i]) return -1;
else rentrn 0;

老师说,2B是通向梦想的第一步
2012-02-28 15:24
快速回复:字符串与指针
数据加载中...
 
   



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

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