不要从char palindrom []中获取输出

时间:2019-04-23 18:56:01

标签: c palindrome

我试图从用户输入中做出回文。

我将用户输入保存为char eingabe []中的数组 与我即时计算使用的数组的索引。

然后我要在palindrom中复制eingabe的反转值,然后将它们两个都打印出来以获得palindrom。

我的i和j正确计数,但是我没有得到palindrom的输出。

希望您能帮助我。

charArray

3 个答案:

答案 0 :(得分:5)

有时添加printf以查看发生了什么非常有用。例如,如果我添加:

do { 
    printf("palindrom[%d] = eingabe[%d]\n", j, i);
    palindrom[j] = eingabe[i];

然后输出为:

abcde
palindrom[0] = eingabe[5]
palindrom[1] = eingabe[4]
palindrom[2] = eingabe[3]
palindrom[3] = eingabe[2]
palindrom[4] = eingabe[1]
eingabe:   "abcde"
palindrom: ""

问题立即显而易见:数组索引被关闭1。由于palindrom([0])的第一个字符被设置为eingabe([5])的最后一个字符,即“ \ 0”,因此C将其视为空字符串。

通过将--i移至循环顶部可以很容易地纠正此问题:

do { 
    --i;
    palindrom[j] = eingabe[i];
    j++;
} while (i != 0);

答案 1 :(得分:1)

尝试使用palindrom[j] = eingabe[i-1];

答案 2 :(得分:0)

这将起作用:

i=0;
do{ 
    palindrom[j++] = eingabe[i++];
} while ( eingabe[i]!='/0');
j=0;
do{ 
    palindrom[j++] = eingabe[i--];
} while ([i]>0);

palindrom[j] = '\0';