如何将一个char数组输入标记为一个char和一个字符串?

时间:2019-05-02 05:44:37

标签: c string.h strchr

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

//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

示例输出:

选择座位(前排座位):A13
// seatRowName = A,seatNumber = 13

1 个答案:

答案 0 :(得分: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 *,并且seatNumber的类型为char [3]。由于RHS和LHS的类型不同,因此您遇到了错误。与许多流行的语言不同,C不允许这样做。

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