|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- #define MAX 1024
- int main(){
- char array[][] = {};
- fgets(array, MAX, stdin );
- return 0;
- }
复制代码
@FishC, fgets函数为什么不能读取二维数组,而一维数组
test.c:7:8: warning: incompatible pointer types passing 'char[0][3]' to parameter of type 'char *' [-Wincompatible-pointer-types]
fgets(array, MAX, stdin );
^~~~~
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h:141:30: note: passing argument to parameter here
char *fgets(char * __restrict, int, FILE *);
^
1 warning generated.
fgets()函数可以读取一维字符数组(也就是字符串),而不能直接读取二维数组。这是因为fgets()函数是按行读取输入,将每行的内容存储到一个字符串中,然后将字符串复制到数组中存储。
对于二维数组,可以使用循环结构配合fgets()函数逐行读取输入,并将每行的内容分别存储到数组中的每个元素。
下面是一个示例代码:
- #include <stdio.h>
- #define ROW 3
- #define COLUMN 4
- #define MAX_LENGTH 1024
- int main() {
- char array[ROW][COLUMN];
- char temp[MAX_LENGTH];
- for (int i = 0; i < ROW; i++) {
- fgets(temp, MAX_LENGTH, stdin); // 逐行读取输入
- for (int j = 0; j < COLUMN; j++) {
- array[i][j] = temp[j]; // 将每行的内容逐个字符存储到二维数组中
- }
- }
- // 打印二维数组中的内容
- for (int i = 0; i < ROW; i++) {
- for (int j = 0; j < COLUMN; j++) {
- printf("%c ", array[i][j]);
- }
- printf("\n");
- }
- return 0;
- }
复制代码
注意,fgets()函数读取的每行内容包含了换行符('\n'),所以上面的示例代码中将换行符也存储到了二维数组中。如果不需要存储换行符,可以在存储前进行判断和处理。另外,上面的示例代码假设了二维数组的行数和列数都是固定的,如果不确定输入的行数和列数,可以根据需要使用动态内存分配来创建二维数组。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|
|