鱼C论坛

 找回密码
 立即注册
查看: 1459|回复: 4

求大神找错误

[复制链接]
发表于 2014-11-13 14:12:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
//有两个函数的功能是一样的,只是我想尝试两种循环,但是不知道整个程序错在哪里,求大神找错
#include <stdio.h>
#define MAX 2000
int getline(char in[] , int lim);
int st(char s[] , char t[]);
char pa[] = "ould";
int main()
{
    char line[MAX];
    while(getline(line , MAX) > 0)
    {
        if(st(line , pa) >= 0)
        {
            printf("%s\n" , line);
        }
    }
}
int getline(char in[] , int lim)
{
    int c;
    int i = 0;
    while(i < lim && (c = getchar() != EOF) && c != '\n')
    {
        in[i] = c;
        i++;
    }
    if(c == '\n')
    {
        in[i] = c;
        i++;
    }
    in[i] = '\0';
    return i;
}
#if(0)
int st(char s[] , char t[])
{
    int i , j , k;
    i = 0;
    while(s[i] != '\0')
    {
        j = i;
        k = 0;
        while(t[k] != '\0' && s[j] == t[k])
        {
            j++;
            k++;
        }
        if(k > 0 && t[k] == '\0')
        {
            return i;
        }
        i++;
    }
    return -1;
}
#endif
#if(1)
int st(char s[] , char t[])
{
    int i , j , k;
    i = 0;
    for(i = 0; s[i] != '\0'; i++)
    {
        for(j = i , k = 0; t[k] != '\0' && s[j] == t[k]; j++ , k++)
        {
            ;
        }
        if(k > 0 && t[k] == '\0')
        {
            return i;
        }
    }
    return -1;
}
#endif


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-13 15:43:26 | 显示全部楼层
char pa[] = "ould";
可能是这里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-17 12:32:42 | 显示全部楼层
看了下你的代码,是不是当输入的字符串里有字串pa[]的话,就输出字符串的内容,如果是的话,把while(i < lim && (c = getchar() != EOF) && c != '\n') 改为
while(i < lim && (c = getchar()) != '\0' && c != '\n')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-19 21:49:56 | 显示全部楼层
while(i < lim && (c = getchar() != EOF) && c != '\n')
改为
while(i < lim && c = getchar()  && c != '\n')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-19 21:52:01 | 显示全部楼层
笑笑生 发表于 2014-11-19 21:49
while(i < lim && (c = getchar() != EOF) && c != '\n')
改为
while(i < lim && c = getchar()  && c  ...

while(i < lim && (c = getchar() != EOF) && c != '\n')
改为
while(i < lim && (c = getchar())  && c != '\n')           //这又句修改了下
差点忘了这是C++了...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 11:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表