初始化会从objective-c/cocoa中的指针目标类型错误中丢弃限定符

pro*_*eek 1 cocoa objective-c

为了打印出文件中的内容,我有以下代码.

FILE *fp = fopen(cString, "w+");
NSString* message = [NSString stringWithFormat:@":SLEEP: %@:%@\n", ...];
char* cMessage = [message UTF8String]; <--  warning 
fprintf(fp, cMessage); <-- warning
fclose(fp);
Run Code Online (Sandbox Code Playgroud)

但是,我Initialization discards qualifiers from pointer target type error进去了char* cMessage,并Format not a string literal and no format argument警告.

代码有什么问题?

Dav*_*ong 6

-UTF8String返回a const char *,但是你将它分配给一个char *.因此,您将丢弃const限定符.

至于fprintf你应该这样做:

fprintf(fp, "%s", cMessage);
Run Code Online (Sandbox Code Playgroud)