我正在尝试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()
,错误是非法搜寻
我现在更加困惑。
答案 0 :(得分:0)
你不需要"&"操作员"路径" scanf中的数组
在C中,数组本身的名称是一个指针(在这种情况下,"路径"是路径数组的指针),你不需要通过&#34来获取它的地址;&安培;"运算符并将其传递给scanf。
您可以使用调试工具来检查"路径"中存储的值。 scanf完成后的数组。
答案 1 :(得分:0)
问题在于:scanf("%s", &path);
。将其重写为scanf("%s", path);
或scanf("%s", &path[0]);
,因为path
已经指向数组的开头(第一个元素)。