你好,我正在尝试编写一个简单的程序,该程序将读取文本并将其存储到字符串中,最后将其返回到我调用函数的位置。到目前为止我所拥有的是:
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];
存在潜在危险,但这不是您的问题所在。
个人说明:您可以轻松地在 char
和 int
数据类型之间进行相同的类型转换,因为它们都是存储字节。这使得在计算之前通过将字母转换为 int
来轻松地对字母进行一些数学运算。
关于c - 读取文件并存储到字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33111536/