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

时间:2015-10-13 19:59:03

标签: 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++;
        }
    }
}

但我不知道这是否正确。我应该使用malloc做一个动态Char吗?我试图做的最好的方法是什么?

[编辑]

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

  

与整数转换不兼容的指针

2 个答案:

答案 0 :(得分:0)

您收到错误,因为" "是一个字符串,并且您尝试将其分配给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可以很容易地对字母进行一些数学运算。

答案 1 :(得分:0)

希望这能解决你的问题,

#include<stdio.h>

FILE *pfile;
char fileData[200],letter;
int ind;

void storeData();

int main()
{ 
 storeData();
 printf("Data From File:\n");
 printf("%s",fileData);
 return 0;
}

void storeData()
{

  ind=0;
  pfile=fopen("textf.txt","r");
  while((letter=fgetc(pfile))!=EOF)
  {
   fileData[ind]=letter;
   ind++;
  }
  fileData[ind]='\0';

}