删除字符串末尾的null终止符

时间:2015-12-07 21:04:10

标签: c

我试图从输入中扫描一个字符,我尝试了所有方法,'\0'但是所有方法都包含空终止符char *p=strtok(string,'\0\') ,这对我来说是不需要的。我怎么剥掉它?我试过了

getline()

但它没有用。我该怎么做? 我正在将字符串usgin {{1}}扫描成一个字符串数组,工作正常,我想输入一个"针"我正在尝试使用getline()扫描,而不是使用strstr来查找匹配但是' \ 0'导致不匹配

3 个答案:

答案 0 :(得分:2)

C使用null-terminated string s,这意味着所有用于“strings”的库函数都会给你并期望给出一个由null终止符跟随的字符数组

您可以将除null终止符之外的字符串中的所有字节复制到新的char数组中:

char buffer[strlen(string)];
memcpy(buffer, string, strlen(string));
p* = buffer;

注意:strlen不包括字符数

中的空终止字符

但是如果将p *作为参数传递给需要字符串的函数,那么在运行时会出现问题。你已被警告:)

答案 1 :(得分:1)

您询问如何从字符串末尾删除NUL终止符。你可以用别的东西覆盖它(比如字母'a')来做到这一点:

str[strlen(str)] = 'a';

请注意,C没有办法从数组中“删除”某些东西(包括一个字符串,它是char s的数组);数组元素总是存在(直到整个数组被销毁),并且它们只能被其他值覆盖。

答案 2 :(得分:0)

您可以使用字符串大小的srncpy来删除字符串末尾的“\ 0”。

char test[] = "example";
char *result;

result = malloc(sizeof(char) * strlen(test));
strncpy(result, test, strlen(test));

但我不确定这是不是你真正想要的。