如何将 char 数组输入标记为 char 和字符串?
How do I tokenize a char array input into a char and a string?
我正在尝试要求用户输入 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
使用以下代码:
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 | [=11=]|
+---+---+---+---+
[0] [1] [2] [3]
在内存中 seatName
将内容存储在连续的 space 中。即使对于 A3
这样的输入,这种方法也能正常工作。您应该为输入提供其他健全性检查。
seatNumber=strchr(seatName, seatRowName);
I get the "error: incompatible types in assignment" on the above line
strchr
returns char *
并且 seatNumber
的类型是 char [3]
。由于 RHS 和 LHS 的类型不同,您会遇到上述错误。与许多流行语言不同 C
不允许这样做。
将苹果分配给橙子几乎总是不正确的。 strcpy(A, B);
而不是 A = B
在这种情况下会起作用。
我正在尝试要求用户输入 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
使用以下代码:
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 | [=11=]|
+---+---+---+---+
[0] [1] [2] [3]
在内存中 seatName
将内容存储在连续的 space 中。即使对于 A3
这样的输入,这种方法也能正常工作。您应该为输入提供其他健全性检查。
seatNumber=strchr(seatName, seatRowName);
I get the "error: incompatible types in assignment" on the above line
strchr
returns char *
并且 seatNumber
的类型是 char [3]
。由于 RHS 和 LHS 的类型不同,您会遇到上述错误。与许多流行语言不同 C
不允许这样做。
将苹果分配给橙子几乎总是不正确的。 strcpy(A, B);
而不是 A = B
在这种情况下会起作用。