这可能是一个新手问题,但这是我的问题:
我想声明一个字符串数组但是当我访问第一个元素时,其他元素会与它连接起来.
#include <stdio.h>
int main(){
char words[2][3] = {"foo", "bar"};
printf("%s\n", words[0]); // I want to print foo
printf("%s\n", words[1]); // I want to print bar
}
Run Code Online (Sandbox Code Playgroud)
哪个输出
foobar
bar
Run Code Online (Sandbox Code Playgroud)
虽然我在期待
foo
bar
Run Code Online (Sandbox Code Playgroud)
有人能解释一下:
usr*_*usr 10
您的数组word没有足够的空间用于字符串末尾的空字节,并且当您尝试将元素打印为C字符串(使用)时,它会导致未定义的行为%s.增加数组大小:
char words[2][4] = {"foo", "bar"};
Run Code Online (Sandbox Code Playgroud)