请问大神如何消除这个警告?
在网上复制了几个字符串截取的函数,请问下下图这个警告如何优雅消除。顺便说一下最近用了clang编译器,错误和警告的提示信息确实要更人性化点
#include <stdio.h> #include <string.h> char* str_l(char* src, char* dst, int n) { char *p=src; char *q=dst; int len=strlen(src); if(n>len) n=len; while(n--) *(q++)=*(p++); *(q++)='\0'; return dst; } char* str_r(char* src, char* dst, int n) { char *p=src; char *q=dst; int len=strlen(src); if(n>len) n=len; p+=(len-n); while((*(q++)=*(p++)) != 0); return dst; } char* sub_str(char* src, char* dst, int start, int len) { char* p=dst; char* q=src; int length=strlen(src); if(start >= length || start<0) return 0; if(len>length) len=length-start; q+=start; while(len--){ *(p++)=*(q++); } *(p++)='\0'; return dst; } int main(int argc, char ** argv) { //str_l char* str = "dlrow olleh"; char nstr[strlen(str)-2+1]; str_l(str, nstr, strlen(str)-2); printf("%s\n", nstr); //str_r char* str1 = "dlrow olle-h"; char nstr1[2+1]; str_r(str1, nstr1, 2); printf("%s\n", nstr1); //sub_str char* str2 = "dlrow olle-h"; char nstr2[5+1]; sub_str(str2, nstr2, 3, 5); printf("%s\n", nstr2); return 0; }
[此贴子已经被作者于2021-9-5 22:17编辑过]