我在C中使用ascitime函数
#include <time.h>
char *asctime(const struct tm *timeptr);
returns something like:
Sun Sep 16 01:03:52 1973\n\0
Run Code Online (Sandbox Code Playgroud)
它返回这个"字符串"(resp.char*):
Sun Sep 16 01:03:52 1973 \n\0
怎么能从这个字符串中删除"\n"?我不希望nextline导致"\n".谢谢
blu*_*ift 19
其他答案似乎过于复杂.你的情况很简单,因为你知道不需要的字符是字符串中的最后一个字符.
char *foo = asctime();
foo[strlen(foo) - 1] = 0;
Run Code Online (Sandbox Code Playgroud)
这会使最后一个字符(\n)为空.
接受答案后
该接受的答案似乎过于复杂。 以下列形式asctime()返回一个指向固定大小的 26 数组的指针:
> Sun Sep 16 01:03:52 1973\n\0
> 0123456789012345678901234455
char *timetext = asctime(some_timeptr);
timetext[24] = '\0'; // being brave (and foolish) with no error checking
Run Code Online (Sandbox Code Playgroud)
消除'\n'对异常字符串更具抵抗力的潜在(尾随)的一般解决方案是:
char *some_string = foo();
char *p = strchr(str, '\n'); // finds first, if any, \n
if (p != NULL) *p = '\0';
// or
size_t len = strlen(str);
if (len > 0 && str[len-1] == '\n') str[--len] = '\0';
// or
str[strcspn(str,"\n")] = '\0';
Run Code Online (Sandbox Code Playgroud)
str[strlen(str) - 1]在第一次建立之前是不安全的strlen(str) > 0。