首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将指针赋值给全局变量?

如何将指针赋值给全局变量?
EN

Stack Overflow用户
提问于 2011-02-22 00:52:46
回答 2查看 4.2K关注 0票数 0

为了确定文件类型,我必须拆分命令行参数。为了做到这一点,我正在使用

代码语言:javascript
代码运行次数:0
运行
复制
char fileName; //global variable, just below function prototypes

char *fileType;

fileType= strtok(inputFile, "."); //first string split
fileName= (int) &fileType; //store the file name for further use

fileType= strtok(NULL, "."); //get the file type

标记器函数正在工作,但为了将冗余代码保持在最低限度,我希望存储文件名,因为稍后我将必须创建一个具有相同名称但不同扩展名的新文件。

在调试器中,永远不会使用fileName变量。为什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-22 01:10:04

关于

代码语言:javascript
代码运行次数:0
运行
复制
char fileName; //global variable, just below function prototypes

如果fileName应该是一个字符串,那么它必须是指向该字符串中第一个char的指针(即char *fileName)。

如果fileName被建议为指向字符串的指针,则应将其声明为char **fileName

关于

代码语言:javascript
代码运行次数:0
运行
复制
char *fileType;

如果这是一个局部变量,并且fileName是指向它的指针,那么在函数返回之后,它将被销毁,并且指针将指向未知数据。

关于

代码语言:javascript
代码运行次数:0
运行
复制
fileName= (int) &fileType; //store the file name for further use

在我看来,这似乎是无稽之谈。为什么要将fileType的地址转换为整数?我猜编译器会抱怨是因为fileNamechar而不是char *,你会注意到这会修复这个错误。不要在不了解自己在做什么的情况下进行这种修复,因为这样的编程只会导致深奥的代码,而这些代码可能无论如何都不会像预期的那样工作。

所以,如果fileName被定义为char *,那么就执行fileName = fileType。否则,如果fileName声明为char **,则执行fileName = &fileType

关于

代码语言:javascript
代码运行次数:0
运行
复制
fileType= strtok(NULL, "."); //get the file type

如果strtok()可以返回一个指向新字符串的指针,并且fileName被声明为char *,那么您以前存储在其中的任何内容都将不再有意义。在这种情况下,fileName需要是char ** (指向字符串的指针),这是我在第一个注释中提出的。

票数 1
EN

Stack Overflow用户

发布于 2011-02-22 00:55:29

您需要在使用strcpy的同时使用char数组。

如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
#define MAX_FILENAME_SIZE 200
char fileName[MAX_FILENAME_SIZE];

int f()
{
    fileType = strtok(inputFule, ".");
    // then use strcpy
    strcpy(fileName, fileType);

}

char全局只能存储一个字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5068767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档