我正在尝试使用
getc(character)
从文件中获取元素并进行操作,但似乎必须在行末有一个'\n'
。 我该如何移除它,这样当我复制字符时就不会出现换行符,从而允许我在选择时处理打印新行?getc(character)
从文件中获取元素并进行操作,但似乎必须在行末有一个'\n'
。 我该如何移除它,这样当我复制字符时就不会出现换行符,从而允许我在选择时处理打印新行?.
.
.
#include <string.h>
.
. /* insert stuff here */
.
char* mystring = "THIS IS MY STRING\n"
char* deststring;
.
.
.
strncpy(deststring, mystring, strlen(mystring)-1);
.
.
.
< p >(顺便说一句,我不太喜欢在字符串中丢弃\0字符。当你开始进行i18n并且字符宽度不固定时,它不起作用。例如,UTF-8可以使用1到4个字节每个“字符”)
作为额外的注意事项,我不建议在字符串中丢弃\0字符。这在做i18n时会有问题,因为字符宽度是不固定的。例如,UTF-8可以使用1到4个字节每个“字符”。要用空格替换所有换行符,请使用:
char *pch = strstr(myStr, "\n");
while(pch != NULL)
{
strncpy(pch, " ", 1);
pch = strstr(myStr, "\n");
}
要删除字符串中第一次出现的换行符,请使用:
char *pch = strstr(myStr, "\n");
if(pch != NULL)
strncpy(pch, "\0", 1);
mystr[ strlen(mystr) - 1 ] = '\0';
buf
是char
类型的,并且它保存了从文件中读取的字符串值...
buf[strlen(buf)-1] = '\0';这将把缓冲区的倒数第二个字符设置为null,即'\0',以删除换行符。 编辑:由于loz提到了编译器错误,我怀疑使用了
const char *
...请问我们能看到代码吗...以下代码可以解决问题
line[strlen(line) - 1] = 0
稍微完整一点的版本:
char* end = line + strlen(line) - 1 ; // end of line
while( (end > line) && isspace(*end) ) end--; // right trim space
*(end+1) = '\0'; // terminate string