打开.txt文件进行写入时出现分段错误

时间:2016-05-07 13:56:06

标签: c file text io override

我正在尝试open特定.txt中的path文件撰写。 我不想覆盖 k文件中的第一个.txt字符

Example:
File before overriding:
0123456789s

File after overriding:
tonytannous

但是,我收到了细分错误。 我正在运行 windows7 ,但我正在使用VMWare编译并运行 VS 操作系统 linux 上的代码。

int func (int k, char* data, char* path)
{
    int fp;
    fp = open(path, O_RDWR);
    if (fp == -1)
        return -1;
    if (write (fp, data, k) != k)
        return -1;
    else
        return 0;
}

int main()
{
    char data[10] = "tonytannou";
    char path[1000];
    int k = 3;
    scanf("%s", &path);
    return func(k, data, path);
}

我确保路径拼写正确,文件确实存在。 知道为什么会发生这样的事情吗?

编辑使用了perror(),错误是非法搜寻 我现在更加困惑。

2 个答案:

答案 0 :(得分:0)

你不需要"&"操作员"路径" scanf中的数组

在C中,数组本身的名称是一个指针(在这种情况下,"路径"是路径数组的指针),你不需要通过&#34来获取它的地址;&安培;"运算符并将其传递给scanf。

您可以使用调试工具来检查"路径"中存储的值。 scanf完成后的数组。

答案 1 :(得分:0)

问题在于:scanf("%s", &path);。将其重写为scanf("%s", path);scanf("%s", &path[0]);,因为path已经指向数组的开头(第一个元素)。