我为字符串定义了一个数组。如果我以这种方式定义它,第一个元素不是空字符串,它工作正常。当其为空字符串时,其他字符串的下一个scanf()
将停止读取输入字符串,并停止执行程序。scanf()在先前定义的字符串的第一个字符串为null时不读取输入字符串
现在我不明白如何定义字符串数组影响读取输入scanf()
。
char *str_arr[] = {"","abc","","","b","c","","",""}; // if first element is "abc" instead of "" then works fine
int size = sizeof(str_arr)/sizeof(str_arr[0]);
int i;
printf("give string to be found %d\n",size);
char *str;
scanf("%s",str);
printf("OK\n");
我明白你在说什么,但通过这样的指针直到现在对我来说工作得很好。我从此不会这样做。但让我感到困惑的是,如何初始化str_arr的字符串数组会影响scanf的工作。程序崩溃时,它的一个空字符串,并工作得很好,当其非空。 –
'str_arr'的初始化定义了它的大小,以及你可以放入多少,你用“hello”初始化它,它会分配一个由6个字符组成的数组(包括空终止符),如果你用“”初始化它“ ,它只会分配一个字符,所以对该数组的任何写入都将超出数组边界。 – MByD
我完成了。但我没有得到它如何影响一个字符串读入一个不同的字符指针,这是str。 @Matteo Italia –