- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在用 C 做一个练习。
程序接收文件名作为参数,不带扩展名(“p01”或“p02”等。)该程序必须打开名为(如果输入“p01”)“p01_c.txt”、“p01_w.txt”和“p01_p.txt”的三个文件。我将文件路径保留到 p01 到字符串 ruta
中,并在打开文件 fopen(ruta, "rb")
。
现在我的问题开始了:
1) 在fopen()
之后,ruta
中出现了一些乱码。
2) 我无法剪切字符串,将 \0
放在我想要剪切字符串的位置。
我在网上搜索了一个答案,但没有找到,所以我第一次在这里问。
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
if(argc<2) {
printf("\nNo se ha introducido un fichero válido\n");
return -1;
} else {
char ruta [] = "";
strncat(ruta,argv[0],strlen(argv[0])-14);
strcat(ruta,"knapsack\\"); // knapsack is the folder containing th files
strcat(ruta,argv[1]); // now ruta is: ...\knapsack\p01
FILE * fCapacidad;
strcat(ruta,"_c.txt"); // ruta is: ... \knapsack\p01_c.txt
printf("1- ruta is: %s\n",ruta); // ruta is OK
fCapacidad = fopen(ruta , "rb");
if(fCapacidad == NULL){
fputs ("\nNo se ha introducido un fichero válido de capacidad\n",stderr); exit(1);
}
FILE * fPesos;
printf("2- ruta is: %s\n",ruta); // ruta HAS GARBAGE!!!
ruta[strlen(ruta-6)] = '\0';
printf("3- ruta is: %s\n",ruta); // ruta IS NOT CROPPED!!!
strcat(ruta,"_w.txt");
printf("4- ruta is: %s\n",ruta); //_w.txt is appended to ruta (OK)
fPesos = fopen(ruta, "rb");
输出是:
1- ruta is: E:\C Projects\MochilaEnC\bin\Debug\knapsack\p01_c.txt
2- ruta is: E:\C Projh>w\MochilaEnC\bin\Debug\knapsack\p01_c.txt
3- ruta is: E:\C Projh>w\MochilaEnC\bin\Debug\knapsack\p01_c.txt
4- ruta is: E:\C Projh>w\MochilaEnC\bin\Debug\knapsack\p01_c.txt_w.txt
No se ha introducido un fichero vßlido de pesos
最佳答案
char ruta[] = "";
只分配一个字符给数组。它与 char ruta[1] = "";
相同。连接到数组时,超出了数组的边界。
使用 char ruta[200] = "";
将为数组分配 200 个字符并将数组初始化为空字符串。该数组最多可连接 199 个字符。您可以使用满足您的内存需求的任何值,我仅以 200 为例。
将 '\0'
分配给数组中的索引的另一个问题可以通过 ruta[strlen(ruta) - 6] = '\0';
。验证 ruta
的长度至少为 6 是个好主意,否则你可能会得到负索引。
在发布的代码中,6
位于带有 ruta
的括号内。这将采用 ruta
的地址并减去 6。然后 strlen()
将从该地址开始并尝试确定字符串的长度。任何结果都不会是 ruta
的正确长度。
关于c - fopen 函数将垃圾放在文件路径名上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32513790/
我想了解是什么让 ClearCase 创建这样的路径(不止一个@@):\TUNE\Integration\XmlFiles\PM_Content@@\main\integ_mp1601\4\Commu
我正在构建我的第一个多语言应用程序。通过 Middelware 成功检测到语言并将其附加到 req.lang。下一步,有没有办法也本地化路由路径?这对于 SEO 非常有用。 这里通常的方法是什么? c
如果选择了一个路径,我想向菜单点添加一个类。 如果每个网站都有自己的 .php/.html 文件,那就很容易了,但是一切都在 一个 中规则 .php 文件,所有内容都通过操作进行导航(?action=
我在 Windows 7(最新的 MSMQ 版本)上将 MSMQ.MSMQQueueInfo 与 jscript 一起使用。这是在加入域的计算机上运行的。由于某种我不知道的原因,它只是不接受我给它的
我有很多带空格的文件夹名称,例如“red dog” --> “c:\red dog\” files = dir str = ['cd ', files(3).name] eval(str) 执行返回错
我正在寻找有关如何使用 getopts 显示不带基名的目录名的信息。这应该首先为我计算机中的所有 sh 文件提供基本名称、制表符,然后是所有目录。 例如,如果我这样做:myBashfile.sh -e
我正在尝试自定义由 devise gem 创建的 url: devise_for :users, path: '', path_names: { sign_in: 'login', s
我有以下网址: https://www.example.com/article/f/1/test+article 我需要通过 JavaScript(纯 JavaScript)从 url 中获取“1”部
我们在我们的应用程序中使用了 boost::filesystem。我有一个“完整”路径,它是通过将多个路径连接在一起构建的: #include #include namespace b
Pathname 的 .children 方法返回的文件系统实体的顺序似乎是任意的,或者至少不是按字母顺序排列的。 有没有办法让这些通过文件系统按字母顺序返回,而不是在返回的数组上调用 .sort?
我正在尝试使用 pip 为 python 3 安装 Gelatin,我得到了这个回溯: Traceback (most recent call last): File "", line 1, in
我有一个注册页面的表格。该表单包含一个图像,该图像会根据情况更改其 src。在提交表单时激活的脚本中,如果该图像具有特定的 src,我希望表单调用警报,因此我需要一种检索和比较值的方法。 HTML:
Ruby 的 Dir、File 和 Pathname 类之间有什么区别?它们似乎共享通用方法,如 basename、dirname、glob 和 join。什么时候使用一种比另一种更有优势? 在将其功
我们在我们的应用程序中使用了 boost::filesystem。我有一个“完整”路径,它是通过将多个路径连接在一起构建的: #include #include namespace b
对于以下代码,我不断收到Uncaught TypeError: undefined is not a function: var jay = /^(\/gallery\/P[\w\dåäö\/]+)$
我正在报告从 native 系统 API 收集的一些信息。 (我知道这很糟糕......但我得到了我无法通过其他方式获得的信息,而且如果/当那个时间到来时,我不必更新我的应用程序。) native A
我需要从 Ruby (1.9.3) 中的 DOS (Win32) 路径获取文件的 NT( native )路径。 意思是,我有字符串: dos_path = "C:\Windows\regedit.e
我才刚刚开始使用 ASP.NET MVC,我有一个有点微不足道的问题:似乎每个 Controller 都有一个附加的类似文件夹的路径,所以我的站点变成了 mydomain.net/Home/somet
下面是bunyan logger的__init__函数。 def __init__(self, *args, **kwargs): """Defined default log format
总结 我如何在 C++ 中使用 libarchive 编写一个 zip 文件,这样路径名称将被 UTF-8 编码?使用 UTF-8 路径名时,特殊字符将在使用 OS X/Linux/Windows 8
我是一名优秀的程序员,十分优秀!