gpt4 book ai didi

c - 删除字符串的最后一个字符

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

为什么这段代码不起作用?

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

int main(void)
{
// local declarations
int len;
char* pStr;

// statements
printf(" how many characters you want to enter?\n");
scanf("%d", &len);
pStr=(char*)calloc(len+1,sizeof(char));
printf("\n enter your string: ");
gets(pStr);
*(pStr+len)='\0';
printf("\n your string: ");
puts(pStr);
printf(" oops! last character deleted.");

getch();
return 0;
}

虽然运行正确,但是当我使用scanf函数读取字符串时,但是为什么它不与 gets 一起使用?

最佳答案

scanf("%s", pStr) 跳到第一个非空白字符,而 gets 则不会。

在第一个 scanf 之后,尾随换行符仍然在输入缓冲区中,因此当您调用 gets 时,结果是空行,除非您在数字后输入了额外的字符。

请注意,由于严重的安全缺陷,gets 被标记为已过时。建议将 gets(var) 的任何使用替换为 fgets(var, length, stdin)

关于c - 删除字符串的最后一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37526912/

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