字符串常量和字符型指针的转化问题

软件和网站开发以及相关技术探讨
回复
mz57
帖子: 6
注册时间: 2015-11-22 17:26
系统: ubuntu14.04

字符串常量和字符型指针的转化问题

#1

帖子 mz57 » 2015-11-25 20:33

用g++编译时遇到如下问题:
报错内容:
warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
h_file = open_file_std(file1,"wb");

这是我的原代码;
//////////////
char *file1;
FILE *h_file;
strcpy(file1,"Hmatrix");
h_file = open_file_std(file1,"wb");

FILE *open_file_std( char *fname, char *mode)
我的Ubuntu版本是14.04
感谢各位大神的解答~~~
头像
astolia
论坛版主
帖子: 6436
注册时间: 2008-09-18 13:11

Re: 字符串常量和字符型指针的转化问题

#2

帖子 astolia » 2015-11-25 22:43

"xxx"字符串对应的参数类型请换成const char *
mz57
帖子: 6
注册时间: 2015-11-22 17:26
系统: ubuntu14.04

Re: 字符串常量和字符型指针的转化问题

#3

帖子 mz57 » 2015-11-27 14:26

astolia 写了:"xxx"字符串对应的参数类型请换成const char *
把file1改成 const char*以后,编译运行:

[color=#FF4000]BigGirth.c: In member function ‘int BigGirth::writeToFile_Hmatrix111()’:
BigGirth.c:1097:32: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
strcpy(file1,"Hmatrix");
^
In file included from BigGirth.c:5:0:
/usr/include/string.h:129:14: error: initializing argument 1 of ‘char* strcpy(char*, const char*)’ [-fpermissive]
extern char *strcpy (char *__restrict __dest, const char *__restrict __src)
^
BigGirth.c:1100:36: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
h_file = open_file_std(file1,"wb");
^
In file included from BigGirth.c:25:0:
open.h:16:7: error: initializing argument 1 of ‘FILE* open_file_std(char*, char*)’ [-fpermissive]
FILE *open_file_std (char *, char *);
^
BigGirth.c:1100:36: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
h_file = open_file_std(file1,"wb");


错的更多了啊
头像
astolia
论坛版主
帖子: 6436
注册时间: 2008-09-18 13:11

Re: 字符串常量和字符型指针的转化问题

#4

帖子 astolia » 2015-11-27 16:02

看来你的C水平真是菜的没边了,参数是指什么都不清楚。好吧,我再说明确点
"xxx"字符串作为函数实参时,对应的函数形参类型请换成const char *
mz57
帖子: 6
注册时间: 2015-11-22 17:26
系统: ubuntu14.04

Re: 字符串常量和字符型指针的转化问题

#5

帖子 mz57 » 2015-11-27 22:01

astolia 写了:看来你的C水平真是菜的没边了,参数是指什么都不清楚。好吧,我再说明确点
"xxx"字符串作为函数实参时,对应的函数形参类型请换成const char *
谢谢前辈的悉心教导,现在这个问题让您说的改好了。
回复