虽然像这样使用sprintf
sprintf("%.40s",str);
Run Code Online (Sandbox Code Playgroud)
我想给strlen(str)代替40这样的值.我该怎么做?我尝试用strlen(str)替换40,但是不起作用.给予像这样的价值
#define len strlen(str)
Run Code Online (Sandbox Code Playgroud)
并且使用%.len也不起作用,因为%.len用于"".
使用*角色.
sprintf(/* ... */, "%.*s", (int) strlen(str), str);
Run Code Online (Sandbox Code Playgroud)
如果使用C99,snprintf也可以适用.
man printf(3)
宽度未在格式字符串中指定,而是作为必须格式化的参数之前的附加整数值参数.
正如GajananH指出的那样,这毫无意义:
为了strlen工作,str必须以NULL终止。
如果strNULL终止,则:
sprintf(str2, "%.*s", strlen(str), str);
Run Code Online (Sandbox Code Playgroud)
只是过于复杂了:
sprintf(str2, "%s", str);
Run Code Online (Sandbox Code Playgroud)
本身仅仅是一个过度复杂的问题:
strcpy(str2, str);
Run Code Online (Sandbox Code Playgroud)