如何确定从开头和结尾读取的单词是否相同?

时间:2014-11-20 16:10:15

标签: c words

所以我正在编写一个C程序,需要查找从开头和结尾读取的单词(在文本文件中)。到目前为止,我已经编写了一个代码,可以找出单词的第一个和最后一个字母是否相同,但无法确定下一步该做什么。有什么帮助吗? :)

  #include <stdio.h>
  #include <string.h>

const int CMAX  = 1000;
const int Dydis = 200;

void algorythm(char *line);

int main(){

void algorythm(char *line){                                        
char word[256];
char rezMasyv[256];
int i=0;
int j=0;
int k=0;
int z=0;

for (i=0;i<strlen(line);i++){                                 
    while (line[i]==' '){
        line[j]=' ';                                              
        ++j;
        ++i;
        }

        word[z]=line[i];
    ++z;
    if (line[i+1]==' ' || line[i+1]=='\n' || i+1==strlen(line)){
       if (word[0]!=word[z-1]){                                       
           for (k=0;k<z;++k){
               line[j]=word[k];
               ++j;
           }
       }
       z=0;
    }
}
line[j]='\0';
j=0;
}
        char duom[CMAX], rez[CMAX], text[Dydis];
FILE *duomFailas;
FILE *rezFailas;

printf("Enter the name of text file \n");
scanf("%s", duom);
duomFailas=fopen(duom, "r");
if (duomFailas==NULL){
    printf ("Error opening text file \n");
    system("pause");
    return 0;
};

printf("Enter the name of result file\n");
scanf ("%s", rez);
rezFailas=fopen(rez, "w");
if (rezFailas==NULL){
    printf ("Error opening results file \n");
    system("pause");
    return 0;
};

while (fgets(text, sizeof(text), duomFailas)) {                  
    algorythm(text);                                           
    fprintf(rezFailas,"%s\n",text);
}

    fclose(duomFailas);
    fclose(rezFailas);
    return(0);
}

文本文件包含许多由空格分隔的单词。我需要删除从开头和结尾读取的单词(lol,samas,wololow等)。

感谢您的帮助;)

2 个答案:

答案 0 :(得分:1)

除非你需要按照上面的方式进行,否则肯定有更简单的方法可以做你想做的事情。

一个例子:

#include <stdio.h>
#include <string.h>

int main()
{
   char a[100], b[100];

   printf("Enter the string to check if it is a palindrome\n");
   gets(a);

   strcpy(b,a);
   strrev(b);

   if( strcmp(a,b) == 0 )
      printf("Entered string is a palindrome.\n");
   else
      printf("Entered string is not a palindrome.\n");

   return 0;
}

这是一个网站,其中包含预先存在的回文(单词相同的向前和向后)程序,用C语言编写,供您参考:http://www.programmingsimplified.com/c-program-find-palindrome

答案 1 :(得分:0)

你可以有两个指向一个单词的指针,一个指向第一个字母,另一个指向最后一个字母。然后你有两个指针走向彼此,确保它们总是指向相同的角色。

类似的东西:

#include <assert.h>
#include <string.h>

int is_palindrome(const char *s)
{
  const char *t;

  assert(s);

  for (t = s + strlen(s) - 1; t > s; ++s, --t) {
    if (*s != *t) {
      return 0;
    }
  }

  return 1;
}