qq546533496 发表于 2014-11-13 14:12:25

求大神找错误

//有两个函数的功能是一样的,只是我想尝试两种循环,但是不知道整个程序错在哪里,求大神找错
#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;
    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 = c;
      i++;
    }
    if(c == '\n')
    {
      in = c;
      i++;
    }
    in = '\0';
    return i;
}
#if(0)
int st(char s[] , char t[])
{
    int i , j , k;
    i = 0;
    while(s != '\0')
    {
      j = i;
      k = 0;
      while(t != '\0' && s == t)
      {
            j++;
            k++;
      }
      if(k > 0 && t == '\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 != '\0'; i++)
    {
      for(j = i , k = 0; t != '\0' && s == t; j++ , k++)
      {
            ;
      }
      if(k > 0 && t == '\0')
      {
            return i;
      }
    }
    return -1;
}
#endif


小人 发表于 2014-11-13 15:43:26

char pa[] = "ould";
可能是这里

风之残月 发表于 2014-11-17 12:32:42

看了下你的代码,是不是当输入的字符串里有字串pa[]的话,就输出字符串的内容,如果是的话,把while(i < lim && (c = getchar() != EOF) && c != '\n') 改为
while(i < lim && (c = getchar()) != '\0' && c != '\n')

笑笑生 发表于 2014-11-19 21:49:56

while(i < lim && (c = getchar() != EOF) && c != '\n')
改为
while(i < lim && c = getchar()&& c != '\n')

笑笑生 发表于 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++了...
页: [1]
查看完整版本: 求大神找错误