2

我试图要求用户输入 3 个字符。我想将第一个字符和最后两个字符分开。因此,如果“A13”是用户输入,我想将“A”存储在单独的字符中,将“13”存储在单独的字符 [] 中。

//initializations
char seatName[4], seatRowName, seatNumber[3];

printf("\n\nPick a seat (Row Seat) ");
scanf("%s", seatName);
seatRowName=seatName[0];
seatNumber=strchr(seatName, seatRowName);
//I get the "error: incompatible types in assignment" on the above line

样本输出:

选座(Row Seat):A13
//seatRowName = A, seatNumber=13

4

1 回答 1

2

使用以下代码:

seatRowName=seatName[0];
strcpy(seatNumber, &seatName[1]);  // strncpy if you want to be safe

如果你永远不会改变seatName,你也可以使用const char *seatNumber = &seatName[1];


为什么有效:

             +0  +1  +2  +3
            +---+---+---+---+
   seatName | A | 1 | 3 | \0|
            +---+---+---+---+
             [0] [1] [2] [3]

在内存seatName中将内容存储在连续空间中。这种方法即使对于像A3. 您应该提供其他健全性检查以供输入。

seatNumber=strchr(seatName, seatRowName);

我在上面的行中收到“错误:分配中不兼容的类型”

strchr返回char *和类型seatNumberchar [3]。因为 RHS 和 LHS 的类型不同,所以您会遇到上述错误。不像许多流行的语言C不允许这样做。

将苹果分配给橙子几乎总是不正确的。strcpy(A, B);而不是A = B在这种情况下工作。

于 2019-05-02T05:48:05.210 回答