.viewall > a::before {
content: "MEER INFO";
font-size: 10px;
}
.viewall > a {
font-size: 0 !important;
}
这是我的代码。是否可以将字符串存储在数组或指针中。这种语言很老。例如,如果用户写入void和null,则输出应为null和void。我尝试使用指向char数组的指针,并希望只打印单词后缀,它不会做任何事情。我的代码怎么了?
答案 0 :(得分:4)
三个问题:
char *read[100];
不是char
的数组。它是指向char
的指针数组。将其更改为char read[100];
以获取大小为100的char
数组。printf("%s",*back);
错误,因为*back
是char
,但℅s
需要char*
。将其更改为printf("%c",*back);
。for (back = ch; back != read; back--) {
应为for (back = ch - 1; back >= read; back--) {
。否则,您将在循环的第一次迭代中读取未初始化的内存位置。现在您的代码容易受到缓冲区溢出的影响,即,当输入的字符超过100个时,任何结果都可能是因为您的程序将从无效的内存位置读取和写入,从而调用未定义的行为。
答案 1 :(得分:2)
如果您的系统(例如POSIX)拥有它,您应该使用getline(3)。否则,声明足够大的行缓冲区(例如char linebuf[200];
)并使用fgets(3)
然后,您可以解析字符串(即行缓冲区)。您可以使用<ctype.h>
中的%70[A-Za-z]
功能,也可以使用isalpha(3)(例如包含Ы
的控制字符串...)
如果你想解析sscanf(3)字符串,事情会变得更复杂(因为非拉丁字母 - 比如俄语UTF-8,例如beaconArray
- 具有多字节编码)。然后使用yery
答案 2 :(得分:2)
C中的字符串没有Java或C#/ .Net中的字符串所具有的所有花哨的东西。 C字符串基本上是char的数组,以'\ 0'字符结尾。因此,当一个函数对C字符串进行操作时,它开始读取char *指针指定的内存位置的字符并继续读取,直到它在字符串中找到'\ 0'字符。如果它没有找到'\ 0'字符,它将继续读取字符,直到它遇到错误,因为它试图读取未分配/分配的内存地址中的内存。 PS。您不能将void指定为值,因为它是一种类型。