首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fopen()的问题

fopen()的问题
EN

Stack Overflow用户
提问于 2011-05-27 03:45:20
回答 3查看 3.1K关注 0票数 0

所以我正在编写一个小工具来格式化我的清单文件,这样我就可以将它导入到预先存在的数据库中。我在尝试做fscanf时遇到了一个很大的问题。在过去,我已经阅读了大量的c文件。我到底做错了什么。

根据Christopher的建议进行编辑仍然是空的。

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>

int main ()
{

FILE* stream;
FILE* output;
char sellercode[200];
char asin[15];
string sku[15];
string fnsku[15];
int quality;

stream = fopen("c:\out\dataextract.txt", "r");
output = fopen("c:\out\output.txt", "w");

if (stream == NULL)
{
    return 0;
}

for(;;)
{
    //if (EOF) break;
    fscanf(stream, "%s", sku);
    fprintf(output, "%s %s  %s  %s  %i\n", sku, fnsku, asin, quality);
}
 return 0;
 }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-27 04:02:02

实际上这里有很多问题。Christopher和mah (在评论中)提到了其中的一些。但一个更大的问题是,您没有分配任何空间来读取(和写入)数据。

string sellercode = ""; (附注: do not define a "string“type,在这里你只会伤害到自己),你指向的是一个只读的字符数组。你实际上需要在这里留下一些内存来读入你的数据,否则你就有可能破坏你的内存。

应声明以下变量:

代码语言:javascript
复制
char sellercode[SOME_REASONABLE_SIZE];
char asin[SOME_REASONABLE_SIZE];
char sku[SOME_REASONABLE_SIZE];
char fnsku[SOME_REASONABLE_SIZE];

值为SOME_REASONABLE_SIZE的。

您还应该始终显式关闭您的文件。千万不要让它们开着。

我注意到你提到的最后一件事是在你的路径中使用了反斜杠,但它们是非转义的。你就得躲开他们。

代码语言:javascript
复制
stream = fopen("c:\\out\\dataextract.txt", "r");
output = fopen("c:\\out\\output.txt", "w");
票数 2
EN

Stack Overflow用户

发布于 2011-05-27 03:49:33

代码语言:javascript
复制
if (stream = NULL)
{
    return 0;
}

应该是

代码语言:javascript
复制
if (stream == NULL)
{
    return 0;
}
票数 4
EN

Stack Overflow用户

发布于 2011-05-27 04:17:13

反斜杠是字符串中的转义字符。在路径名中使用正斜杠。"c:/foo/bar.txt“

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6144166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档