标签: null-terminated

复制内部带有空值的字符串

我想复制C(Windows)中包含空值的字符串.我需要一个函数,我将传递缓冲区长度,以便NULL字符将毫无意义.我找到了StringCbCopy函数但它仍然在第一个NULL字符处停止.

c string null null-terminated

0
推荐指数
1
解决办法
162
查看次数

NULL终止了c_str()?

为什么使用is_it_valid_color("yellow")工作和输出FOUND IT但使用is_it_valid_color(x.c_str());不起作用?

我有一种感觉它与null终止字符串有关.控制台中的输出看起来相同:

color: 'yellow'
FOUND IT
color: 'yellow'
Run Code Online (Sandbox Code Playgroud)

.

const char *color_names[] = {"yellow", "green", "red"};
const int color_names_SIZE = 3;

void is_it_valid_color(const char* color) {
    cout << "color: '" << color << "'" << endl;

    for(int i = 0; i < color_names_SIZE; ++i) {
        if(color == *(color_names + i)) {   
            cout << "FOUND IT" << endl;
            break;
        }
    }
}



is_it_valid_color("yellow");


string x = "yellow";

is_it_valid_color(x.c_str());
Run Code Online (Sandbox Code Playgroud)

c++ string c-strings null-terminated

0
推荐指数
1
解决办法
237
查看次数

C打印整个字符串变量(忽略\ 0终止)

一个例子说超过千言万语:

unsigned char *hello = (unsigned char*)malloc(STR_LEN * sizeof(unsigned char));
const char *str= "haha";
memcpy(hello, str, strlen(str) + 1);
Run Code Online (Sandbox Code Playgroud)

如何打印整个hello变量的内容(printf("%s",..)仅在\0-termination 之前尊重部分而不是所有STR_LEN字符).

c variables printf null-terminated

0
推荐指数
1
解决办法
482
查看次数

新动态char数组末尾的空字符

如果我创建动态char数组:

 char * c = new char[5];
Run Code Online (Sandbox Code Playgroud)

\0不用字符串来填充它,空字符是否在这个数组的末尾?

c++ arrays pointers char null-terminated

0
推荐指数
1
解决办法
512
查看次数

空终止C中的字符串

我有一个字符串,末尾有一些空格.我想在第一个空格出现的位置终止这个字符串,这样当我稍后进行strncpy()它时,它只会复制不包含空格的字符串部分.

这是一些尝试,显然给了我一个细分.我该怎样做我打算做的事情?

int main() {
    char* s1 = "SomeString             ";
    *(s1 + 10)='\0';
    printf("%s\n",s1);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c string null-terminated

0
推荐指数
1
解决办法
84
查看次数

为什么/何时包含C字符串的终止'\ 0'字符?

我是C的新手,我们需要手动将终止'\ 0'字符添加到字符串时有点困惑.给定此功能来计算字符串长度(为清楚起见):

int stringLength(char string[])
{
    int i = 0;
    while (string[i] != '\0') {
        i++;
}
    return i;
}
Run Code Online (Sandbox Code Playgroud)

它根据空终止字符计算字符串的长度.那么,使用以下情况,'\ 0'字符的作用是什么(如果有的话)?

情况1:

char * stack1 = "stack"; 
printf("WORD %s\n", stack1);
printf("Length %d\n", stringLength(stack1));
Run Code Online (Sandbox Code Playgroud)

打印:

WORD stack
Length 5
Run Code Online (Sandbox Code Playgroud)

案例2:

char stack2[5] = "stack";
printf("WORD %s\n", stack2);
printf("Length %d\n", stringLength(stack2));
Run Code Online (Sandbox Code Playgroud)

打印:

WORD stack???
Length 8
Run Code Online (Sandbox Code Playgroud)

(这些结果每次都有所不同,但永远不正确).

案例3:

char stack3[6] = "stack";
printf("WORD %s\n", stack3);
printf("Length %d\n", stringLength(stack3));
Run Code Online (Sandbox Code Playgroud)

打印:

WORD stack
Length 5
Run Code Online (Sandbox Code Playgroud)

案例4:

char stack4[6] = "stack";
stack4[5] = '\0'; …
Run Code Online (Sandbox Code Playgroud)

c string c-strings null-terminated

0
推荐指数
2
解决办法
2001
查看次数

C - Null Terminating char不会停止打印

在这部分代码中:

char* data;
char num[10];

sprintf(num, "%d", 260);
strcat(data, num);
strcat(data, "\0");

sprintf(num, "%d", 130);
strcat(data, num);

sprintf(num, "%d", 128);
strcat(data, num);

printf("Data: %s", data);
Run Code Online (Sandbox Code Playgroud)

它的印刷:

Data: 260130128
Run Code Online (Sandbox Code Playgroud)

为什么会这样?null终止符不应该终止打印?

谢谢

编辑:

  1. 数据已经初始化,我从一个函数中获取它.

  2. 为什么不打印只有260?我该怎么做?

c null-terminated strcat

0
推荐指数
1
解决办法
455
查看次数

为什么我看不到数组中的最后一个char是null终止符?

如何检查char数组是否以空值终止?

char input[80];

fgets(input, sizeof(input), stdin);

for (i = 0; input[i]; i++)
{
    if (input[i] == '\0') {
       printf("null!!!"); // never works
    }
}
Run Code Online (Sandbox Code Playgroud)

例如,以下代码不会打印null.

c arrays null loops null-terminated

-3
推荐指数
1
解决办法
75
查看次数

标签 统计

null-terminated ×8

c ×6

string ×4

arrays ×2

c++ ×2

c-strings ×2

null ×2

char ×1

loops ×1

pointers ×1

printf ×1

strcat ×1

variables ×1