gpt4 book ai didi

c - 在C中读取txt时如何删除多余的换行符

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

我是 C 的新手,尝试做一些练习

我想把txt文件改成

Chicken
10000
Cow
20000
Duck
20
Sheep
1000

Chicken 10000
Cow 20000
Duck 20
Sheep 1000

然后消灭动物<50

Chicken 10000
Cow 20000
Sheep 1000

我的第一步:

读取文件并将字母组成字符串。像第一个单词“Chicken”,将由“C”“h”“i”“c”“k”“e”“n”组成。按照我的代码,当我使用 strcpy(str0, ""); 时,我更改了字符串数组 strings[0] = str0; (str0 现在是“Chicken” ) 在strcpy(str0, "");之前,但是在strcpy(str0, "");运行时,我在strings[0]中的内存也被改变了。

我该如何解决这个问题?

这是我的代码:

void append(char* s, char c)
{
int len = strlen(s);
s[len] = c;
s[len+1] = '\0';
}

int main() {
char str0[256] = "";
char tmp_char;
const char *string[2];
int i, c, line_counter=0;
FILE *file;
file = fopen("cry.txt", "r");
if (file) {
while ((c=getc(file)) !=EOF) {
if (c == 10) {
line_counter++;
string[0]=str0;
strcpy(str0, "");
continue;
}
tmp_char = c;
append(str0, tmp_char);
}
fclose(file);
}
return 0;
}

最佳答案

你应该把你的问题分成更小的部分并相互独立地实现它们 --> “分而治之”

在开始编程之前,您应该考虑这些步骤。

我会按以下方式分析问题:

  • 打开文件
  • 打开输出文件
  • 虽然不是eof
    • 读取数据集 --> 2 行
      • 读一行 -> 解析动物名称
      • 读取一行->解析数字
    • 过滤数据集
    • 写数据集
  • 关闭文件

我将从中派生出以下结构/函数(或使用库函数——取决于类的任务):

  • 结构
    • 数据集{animalName, count};
  • 函数
    • readLine(filehandle, bufferpointer, maxbuffersize) -> 成功
    • readDataset(bufferpointer1, bufferpointer2) -> 成功
    • (parseAnimalName(linebuffer1, buffersize, namebuffer, maxlength) -> 成功)
    • (parseAnimalCount(linebuffer, numberpinter) -> 成功)
    • filterAnimal(DataSet) -> bool
    • writeAnimal(filehandle, DataSet) --> 成功

根据使用库解析函数的可能性,我会省略括号中的函数。

有了这个孤立的小功能,应该更容易实现整个问题并分析错误发生的位置。

关于c - 在C中读取txt时如何删除多余的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53755690/

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