我试图从输入中扫描一个字符,我尝试了所有方法,'\0'
但是所有方法都包含空终止符char *p=strtok(string,'\0\')
,这对我来说是不需要的。我怎么剥掉它?我试过了
getline()
但它没有用。我该怎么做? 我正在将字符串usgin {{1}}扫描成一个字符串数组,工作正常,我想输入一个"针"我正在尝试使用getline()扫描,而不是使用strstr来查找匹配但是' \ 0'导致不匹配
答案 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));
但我不确定这是不是你真正想要的。