| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1934 人关注过本帖
标题:在编一个提取字符串的程序时,发现了一个问题,希望有大神可以解答
取消只看楼主 加入收藏
rain9797
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2020-3-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
在编一个提取字符串的程序时,发现了一个问题,希望有大神可以解答
#include <stdio.h>
#include <string.h>
int main()
{
    char character[100]={"Fred male 25;John male 62;Anna female 16\0"};
    char c[9][10];
    int i=0,j=0,k=0,l=0;
    char tmp[10]="\0";
    while (true)
    {
        while (true)
        {
            
            tmp[k]=character[i];
            if (character[i+1]==';' || character[i+1]=='\0' || character[i+1]==' ')
            {
                strcpy(c[j],tmp);
                for (l=0;l<=2;l++)
                {
                    tmp[l]='\0';//将tmp重新初始化
                }
                k=0;//使k重新变为0,让tmp的下标再次从0开始
                i+=2;  
                break;
            }
            i++;
            k++;
        }
        j++;
        if (character[i-1]=='\0')
        {
            break;
        }
   
    }
    for (j=0;j<=8;j++)
    {
        i=0;
        while(c[j][i]!='\0')
        {
            printf("%c",c[j][i]);
            i++;
        }
        printf("\n");
    }
    return 0;
}
结果是这样的:
图片附件: 游客没有浏览图片的权限,请 登录注册

问题:在while循环内部的for循环那里,当l(是字母L的小写)可以取2及其以上的数时,运行结果都和上面是一样的(都是对的),但是当l<=1时,结果就是错的,这我能够接受,问题在于,当l<=2时,它的结果不应该是对的,即使l<=5也不应该是对的,给我感觉就像是tmp数组前三个元素被赋值为'\0',后面的所有元素都丢失了,这是怎么回事?
搜索更多相关主题的帖子: tmp while char 结果 character 
2020-04-18 23:40
rain9797
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2020-3-1
收藏
得分:0 
回复 2楼 wmf2014
上面修改后的代码我看到了,但是应该是i+=1才对,然后下面的极端测试,大致意思我懂了,但是一些细节我没理解到,可以帮我解释一下吗:
1.for(j=0;a[j]&&a[j]!=character[i];j++) 这一段没看懂:a[j]&&a[j]!=character[i]
2.if(!a[j]) !a[j]的意思是character[i]!=a[j],如果是自然语言我很好理解,可是直接一个!a[j]给我一种没有判断对象的感觉,还有下面的if(l) 和if(!l)看的我稀里糊涂的,原谅我学c语言没学多久
2020-04-19 11:10
rain9797
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2020-3-1
收藏
得分:0 
回复 3楼 吹水佬
学到了,感谢
2020-04-19 11:21
rain9797
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2020-3-1
收藏
得分:0 
回复 6楼 飞天大烧卖
我想明白了,strcpy复制的是字符串,所以遇到0就终止了
2020-04-19 16:45
rain9797
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2020-3-1
收藏
得分:0 
回复 7楼 forever74
明白了
2020-04-19 16:46
快速回复:在编一个提取字符串的程序时,发现了一个问题,希望有大神可以解答
数据加载中...
 
   



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

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