gpt4 book ai didi

c - 从 c 字符串中删除字符

转载 作者:太空宇宙 更新时间:2023-11-04 00:19:39 25 4
gpt4 key购买 nike

海湾合作委员会 4.4.4 c89

我正在从一个文本文件中读取,该文本文件由双引号中的名称组成。

"Simpson, Homer"
etc

但是,我想从字符串中删除双引号。

我就是这样做的,但我不确定这是最好的方法。

int get_string(FILE *in, char *temp)
{
char *quote = NULL;
/* Get the first line */
fgets(temp, STRING_SIZE, in);
printf("temp before [ %s ]\n", temp);
/* Find the second quote */
if((quote = strrchr(temp, '"')) == NULL) {
fprintf(stderr, "Text file incorrectly formatted\n");
return FALSE;
}
/* Replace with a nul to get rid of the second quote */
*quote = '\0';

/* Move the pointer to point pass the first quote */
temp++;
printf("temp after [ %s ]\n", temp);
return TRUE;
}

非常感谢您的任何建议,

最佳答案

不,这行不通。您正在更改参数 temp,但调用函数仍将具有旧值。函数外的 temp 将指向开头的引号。您应该移动缓冲区中的字符。

但是我建议在堆中分配缓冲区并返回指向它的指针,让调用者在需要时释放缓冲区。这似乎是一个更清洁的解决方案。同样,这样您就不会依赖调用者传递足够大的缓冲区。

一般来说,从文本文件中可靠地读取行在 C 中并不是一项微不足道的任务,因为它缺乏自动内存分配功能。如果可能切换到 C++,我建议尝试更简单的 C++ getline

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

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