c - 读取文件并存储到字符串中

标签 c

你好,我正在尝试编写一个简单的程序,该程序将读取文本并将其存储到字符串中,最后将其返回到我调用函数的位置。到目前为止我所拥有的是:

void crawler() {


FILE *file;
char line[256], letra[256];
int j = 0;
file = fopen("teste.txt", "r");

letra[j] = fgetc(file);
j++;

while (fgets(line, sizeof(line), file)) {

    for(int i = 0; line[i] != 00; i++)
    {
        if(line[i] == 46)
        {
            if(line[i+1] == 46)
            {
                letra[j] = " ";
                j++;
            }
        }
        else
        {
            letra[i] = line[i];
            j++;
        }
    }
}

但我不知道这是否是正确的方法。我应该做一个动态 Char 而不是使用 malloc 吗?我想做的事情的最佳方法是什么?

[编辑]

我在这一行收到错误:letra[j] = "";

incompatible pointer to integer conversion

最佳答案

您收到错误,因为 "" 是一个字符串,而您试图将其分配给 char 数据类型。在 C 中,字符串由 char * 数据类型(即指针)处理。您无法将指针转换为不同的数据类型,因此会出现错误。

你应该这样做:

while (fgets(line, sizeof(line), file)) {

    for(int i = 0; line[i] != 00; i++)
    {
        if(line[i] == 46)
        {
            if(line[i+1] == 46)
            {
                letra[j] = ' ';
                j++;
            }
        }
        else
        {
            letra[i] = line[i];
            j++;
        }
    }
}

我还发现 letra[i] = line[i]; 存在潜在危险,但这不是您的问题所在。

个人说明:您可以轻松地在 charint 数据类型之间进行相同的类型转换,因为它们都是存储字节。这使得在计算之前通过将字母转换为 int 来轻松地对字母进行一些数学运算。

关于c - 读取文件并存储到字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33111536/

相关文章:

android - 从 C (NDK) 调用 Thread.yield() 或等效函数

c - 如何获取网络设备统计信息?

c - 两个消费者一个生产者的 pthread 同步

php - 这是什么代码?

c - 如何创建一个将输入除以 2 的收缩函数?

c - 使用 C 中的套接字通过多个客户端传输文件时出现格式错误

c - 如何使用 getrusage 读取 C 中的页面错误?

c - 将多个单独的字符串传递给函数

c - 了解汇编中的 C 程序

c - 使用 CUBLAS 批量 QR 分解