【发布时间】:2021-12-14 11:26:53
【问题描述】:
我试图在 c 中反转一个字符串,起初这似乎很容易,但我一直遇到一些奇怪的问题,我似乎不明白它的来源。
字符串 c3 不断显示更多应该显示的字符
#include <stdio.h>
#include <stdlib.h>
int main()
{
char c1[10];
char c3[10];
int i,j,l;
printf("donner la chaine a inverser\n");
fflush(stdin);
gets(c1);
for(i = 0; c1[i] != '\0'; i++)
{
}
l = i;
j = 0;
for(i = l-1; i >= 0; i--)
{
printf("%d%d\n", i, j);
c3[j] = c1[i];
j++;
}
printf("%s", c3);
return 0;
}
我不太确定,但 c3 应该只有 c1 的字符数,但它表明它在 printf("%s", c3); 中包含更多。
我对 c 中的字符串还很陌生,所以我可能错过了一些非常明显的东西。
【问题讨论】:
-
与您的问题无关,但 C 规范明确表示将仅输入流(如
stdin)传递给fflush会导致未定义的行为。跨度> -
副本上需要一个终止符 - '\0'。
-
在 printf 之前添加
c3[l] = '\0';。