Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 给出一行回文的列表_C_Stdout_Stdin_Palindrome - Fatal编程技术网

C 给出一行回文的列表

C 给出一行回文的列表,c,stdout,stdin,palindrome,C,Stdout,Stdin,Palindrome,我正在尝试编写一个程序,它查找回文(在一行中的几个单词之间)并编写它们。例如: >Maszka anna rentner forfreakingsake >anna rentner 但是我确实检查了第一个单词(直到空格),我不知道如何开始检查下一个单词。这应该是一种简单、原始的方式,有人能帮我吗? 我拥有的(不多): #包括 #包括 #定义N 10000 int main() { int i,j; char-satz[N]; 字符回文[N]; fgets(satz

我正在尝试编写一个程序,它查找回文(在一行中的几个单词之间)并编写它们。例如:

    >Maszka anna rentner forfreakingsake

    >anna rentner
但是我确实检查了第一个单词(直到空格),我不知道如何开始检查下一个单词。这应该是一种简单、原始的方式,有人能帮我吗? 我拥有的(不多):

#包括
#包括
#定义N 10000
int main()
{
int i,j;
char-satz[N];
字符回文[N];
fgets(satz);
对于(i=0;i!=EOF;i++)
satz[i]=getchar();//首先用字符填充数组
}
printf(“wth:(”);
}

我想比较satz[I]和satz[j](j=strlen(word)-1应该是单词的最后一个字母),回文[]应该是带有回文的数组,我可以打印出来。但是我不知道数组的大小,也不知道单词的长度,所以我被困在这里。

我能想到的最简单的方法是从字符串中创建一个数组。空格可以是其中的分隔符。所以只要解析它并将每个单词添加到一个数组中。然后你就可以对该数组。

\include
#include <stdio.h>
#include <ctype.h>

int main(void){
    char word[128];
    int i=0, ch;

    putchar('>');
    while(EOF != (ch = getchar())){
        if(isspace(ch)){
            if(i){
                int fr, bk;
                for(fr=0, bk=i-1;word[fr]==word[bk];++fr,--bk);
                if(fr < bk)//not palindromes
                    i = 0;
                else {
                    while(i)
                        putchar(word[--i]);
                    putchar(ch);
                }
            }
            if(ch == '\n')
                break;
        } else {
            word[i++] = tolower(ch);//check i < sizeof(word)
        }
    }
    putchar('\n');

    return 0;
}
#包括 内部主(空){ 字符字[128]; int i=0,ch; putchar('>'); 而(EOF!=(ch=getchar()){ if(isspace(ch)){ 如果(i){ int-fr,bk; for(fr=0,bk=i-1;字[fr]==字[bk];++fr,--bk); if(fr
请显示您拥有的代码您至少应该告诉您尝试了什么…并在此处复制/粘贴您的代码。数组之间用空格分隔?请用示例进一步解释,因为as is是不正确的。我不认为这等于一个答案。可能应该是一个注释。它看起来很好,工作正常。但是当我开始这个程序时在Windows中,控制台在给出答案后立即关闭。我可以得到一些解决此问题的建议吗?@user2957781
getchar();
系统(“暂停”);
返回0之前写入;
#include <stdio.h>
#include <ctype.h>

int main(void){
    char word[128];
    int i=0, ch;

    putchar('>');
    while(EOF != (ch = getchar())){
        if(isspace(ch)){
            if(i){
                int fr, bk;
                for(fr=0, bk=i-1;word[fr]==word[bk];++fr,--bk);
                if(fr < bk)//not palindromes
                    i = 0;
                else {
                    while(i)
                        putchar(word[--i]);
                    putchar(ch);
                }
            }
            if(ch == '\n')
                break;
        } else {
            word[i++] = tolower(ch);//check i < sizeof(word)
        }
    }
    putchar('\n');

    return 0;
}