gpt4 book ai didi

c - 为什么这个程序不停止接受输入?

转载 作者:行者123 更新时间:2023-11-30 18:33:30 25 4
gpt4 key购买 nike

我编写了一个 C 程序来使用指针反转字符串,我面临的问题是我无法在不使用循环的情况下接受字符串。也不是完整的字符串打印,它只打印单个字符。

我尝试使用循环来访问字符串,它工作得很好,但我不打算这样做。

    #include<stdio.h>
int main()
{
char s[10];
char temp;
scanf("%s", s);
char *start=s;
char *end=s;
while(*end!='\0')
{
end++;
}
end--;
while(start<end)
{
temp=*start;
*start=*end;
*end=temp;
}
printf("%s", s);
}

最佳答案

问题在于,您在第二个循环中永远不会减少 end 指针,也不会增加 start 指针。

尝试

while (start < end)
{
temp = *start;
*start++ = *end;
*end-- = temp;
}

另一方面,如果用户使用您的方法未键入任何内容,您可能会遇到问题

while (*end != '\0')
{
end++;
}
end--; // UB when strlen(s) = 0

切换到

if (*end != 0)
{
end += strlen(s) - 1;
}

此外,在使用 scanf 时最好限制字符串长度,以避免缓冲区溢出:

scanf("%9s", s);

关于c - 为什么这个程序不停止接受输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57021748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com