我正在尝试要求用户输入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
样本输出:
选择一个座位(Row Seat):A13
// seatRowName = A,seatNumber = 13
使用以下代码:
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
在这种情况下会起作用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句