将输入文件名(const*file*)存储到字符数组
因此,我尝试将文本文件(例如,将输入文件名(const*file*)存储到字符数组,c,C,因此,我尝试将文本文件(例如,file.txt)作为函数参数,并将文件名保存为字符数组。我在下面编写了这个简单的代码,希望FnameToChar(“test.txt”)将返回一个字符数组作为array[]={t',e',s',t','\0'}。我应该如何修复语法以使其正常工作 char FnameToChar(const char *fn) { char filename[20]; filename = fn; return filename; } 您的代码有几个问题:
file.txt
)作为函数参数,并将文件名保存为字符数组。我在下面编写了这个简单的代码,希望FnameToChar(“test.txt”)
将返回一个字符数组作为array[]={t',e',s',t','\0'}
。我应该如何修复语法以使其正常工作
char FnameToChar(const char *fn)
{
char filename[20];
filename = fn;
return filename;
}
您的代码有几个问题:
char*
,而不是char
,它是一个单个字符
赋值运算符复制c字符串。您需要使用类似于strcpy
的函数。在您的情况下,也许您应该使用strdup
创建字符串的新副本,但请记住您必须释放它
您的代码有几个问题:
char*
,而不是char
,它是一个单个字符
赋值运算符复制c字符串。您需要使用类似于strcpy
的函数。在您的情况下,也许您应该使用strdup
创建字符串的新副本,但请记住您必须释放它
- 返回类型应该是
,而不是char*
char
- 您应该使用来复制字符串
- 从函数返回时,非静态局部变量将无效。您应该动态分配一个数组
#include <string.h> /* for strncpy() */
char* FnameToChar(const char *fn)
{
static char filename[20];
strncpy(filename, fn, sizeof(filename));
filename[sizeof(filename) - 1] = '\0'; /* make sure to have terminating null-character */
return filename;
}
#包括/*用于strncpy()*/
字符*FnameToChar(常量字符*fn)
{
静态字符文件名[20];
strncpy(文件名,fn,sizeof(文件名));
filename[sizeof(filename)-1]='\0';/*请确保使用空字符*/
返回文件名;
}
- 返回类型应该是
,而不是char*
char
- 您应该使用来复制字符串
- 从函数返回时,非静态局部变量将无效。您应该动态分配一个数组
#include <string.h> /* for strncpy() */
char* FnameToChar(const char *fn)
{
static char filename[20];
strncpy(filename, fn, sizeof(filename));
filename[sizeof(filename) - 1] = '\0'; /* make sure to have terminating null-character */
return filename;
}
#包括/*用于strncpy()*/
字符*FnameToChar(常量字符*fn)
{
静态字符文件名[20];
strncpy(文件名,fn,sizeof(文件名));
filename[sizeof(filename)-1]='\0';/*请确保使用空字符*/
返回文件名;
}
您不需要空值检查fn吗?您不需要空值检查fn吗?您的输入已经是一个字符数组,因此不需要该函数。您的输入已经是一个字符数组,因此不需要该函数。
#include <string.h> /* for strncpy() */
char* FnameToChar(const char *fn)
{
static char filename[20];
strncpy(filename, fn, sizeof(filename));
filename[sizeof(filename) - 1] = '\0'; /* make sure to have terminating null-character */
return filename;
}