gpt4 book ai didi

C:输出打印未回显的变量内部的值

转载 作者:太空宇宙 更新时间:2023-11-04 05:26:55 24 4
gpt4 key购买 nike

我有一段非常简单的 C 代码,它必须简单地回显 x 数组中的值,令人惊讶的是,它还回显数组 y 中的值...

#include <iostream.h>
#include <conio.h>
#include <string.h>

int i;
char x[3]={'a','b','c'},
y[3][2]={
{'a','A'},
{'b','B'},
{'c','C'}};
void main(){
clrscr();
while(i<strlen(x)) cout << x[i++] << endl;
getch();
}

输出:

a
b
c
a
A
b
B
c
C

显然,前 3 个字符是我真正想要回显的字符......
但是数组 y 中的那些后续字符呢?

最佳答案

变量 x 不是字符串,对其调用 strlen() 会导致未定义的行为。

越界访问数组 x 也会导致未定义的行为。

你需要:

const char *x = "abc";

使其成为一个有效的字符串(即以'\0'结尾),或者:

const char x[] = { 'a', 'b', 'c', '\0' };

但这要冗长得多,所以为什么要那样做呢?如果您指的是字符串(您确实是这样),请将其写成字符串。

你当然也可以换一种方式,说“它是一个字符数组,但不是一个字符串”,但是你不能使用需要字符串的strlen():

const char x[] = { 'a', 'b', 'c' };

for(size_t i = 0; i < sizeof x / sizeof *x; ++i)
printf("%c\n", x[i]);

关于C:输出打印未回显的变量内部的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22043963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com