如何在换行符“\n”之前将字符“\t”添加到字符串中
How to add a character "\t" into a string before the newline character "\n"
我想知道如何取一行字符串并在换行符前添加制表符。现在我正在使用 fgets 获取行然后使用
strcat(line_data, "\t");
但这只是在换行符之后添加制表符
假设line_data
有足够的内存:
char* newline = strchr(line_data, '\n');
newline[0] = '\t';
newline[1] = '\n';
newline[2] = '[=10=]';
当然,如果没有,你必须这样做:
size_t len = strlen(line_data);
char* newstr = malloc(len + 2); /* one for '\t', another for '[=11=]' */
memcpy(newstr, line_data, len);
newstr[len - 1] = '\t'; /* assuming '\n' is at the very end of the string */
newstr[len] = '\n';
newstr[len + 1] = '[=11=]';
假设 line_data
不包含 '\n'
,代码不执行任何操作:
你只需要
char *p = strchr(line_data, '\n');
if (p) strcpy(p, "\t\n");
我想知道如何取一行字符串并在换行符前添加制表符。现在我正在使用 fgets 获取行然后使用
strcat(line_data, "\t");
但这只是在换行符之后添加制表符
假设line_data
有足够的内存:
char* newline = strchr(line_data, '\n');
newline[0] = '\t';
newline[1] = '\n';
newline[2] = '[=10=]';
当然,如果没有,你必须这样做:
size_t len = strlen(line_data);
char* newstr = malloc(len + 2); /* one for '\t', another for '[=11=]' */
memcpy(newstr, line_data, len);
newstr[len - 1] = '\t'; /* assuming '\n' is at the very end of the string */
newstr[len] = '\n';
newstr[len + 1] = '[=11=]';
假设 line_data
不包含 '\n'
,代码不执行任何操作:
你只需要
char *p = strchr(line_data, '\n');
if (p) strcpy(p, "\t\n");