我遇到的问题只是打开一个基于输入的数字文件.示例包括:
int main(int argc, char *argv[])
{
int argument = atoi(argv[1]);
FILE *fp;
fp = fopen("/folder/item'argument'file", "r");
//do stuff to the file
}
Run Code Online (Sandbox Code Playgroud)
传递4的示例将打开名为"item4file"的文件以供使用
我该如何解决这个问题?
衷心感谢任何和所有的帮助
int argument = atoi(argv[1]);
FILE *fp;
char address[50]; // choose the size that suits your needs
sprintf (address, "/folder/item%dfile", argument);
fp = fopen(address, "r");
Run Code Online (Sandbox Code Playgroud)
正如您可以从引用中读取的那样,终止空字符会自动附加到字符串中.
但是,如果要避免缓冲区溢出,则应使用snprintf(在上面的相同参考页中显示),声明缓冲区的最大大小,以便输入不会溢出它.
int argument = atoi(argv[1]);
FILE *fp;
char address[50]; // choose the size that suits your needs
snprintf (address, 49, "/folder/item%dfile", argument); // 49 since we need one index for our null terminating character
Run Code Online (Sandbox Code Playgroud)