Getting this error: warning: too many arguments for format [-Wformat-extra-args]

Getting this error: warning: too many arguments for format [-Wformat-extra-args]

  printf("\nEnter Matrix A\n", i + 1, j + 1);
  for (i = 0; i < r; ++i)
    for (j = 0; j < c; ++j) {
      scanf("%d", &a[i][j]);
    }

  printf("\nEnter Matrix B\n", i + 1, j + 1);
  for (i = 0; i < r; ++i)
    for (j = 0; j < c; ++j) {
      scanf("%d", &b[i][j]);
    }

当我编译这个时,我收到一条错误消息说 main.c:9:10: 警告:第 10 行和第 16 行的格式 [-Wformat-extra-args] 的参数过多。我是C 语言编程新手,任何提示都会有所帮助。

哦,我看到你只是缺少 %i 的 printf。没什么大不了的。那就是它告诉你的。如果这有帮助,请给绿色检查。谢谢

#include <stdio.h>

int main() {
  int r, c, a[100][100], b[100][100], sum[100][100], i, j;
  printf("Enter the number of rows: ");
  scanf("%d", &r);
  printf("Enter the number of columns: ");
  scanf("%d", &c);

  printf("\nEnter Matrix A\n %i,%i", i + 1, j + 1);
  for (i = 0; i < r; ++i)
    for (j = 0; j < c; ++j) {
      scanf("%d", &a[i][j]);
    }

  printf("\nEnter Matrix B\n %i,%i", i + 1, j + 1);
  for (i = 0; i < r; ++i)
    for (j = 0; j < c; ++j) {
      scanf("%d", &b[i][j]);
    }


  for (i = 0; i < r; ++i)
    for (j = 0; j < c; ++j) {
      sum[i][j] = a[i][j] + b[i][j];
    }

  printf("\nA + B = \n");
  for (i = 0; i < r; ++i)
    for (j = 0; j < c; ++j) {
      printf("%d   ", sum[i][j]);
      if (j == c - 1) {
        printf("\n\n");
      }
    }

  return 0;
}

代码中的问题:您在 printf() 函数中提供了额外的参数,但未指定 格式说明符printf() 的语法是 int printf ( const char * format, ... );

您可以查看 official or this 网站以了解如何使用 printf() 函数的详细信息。

解决您的问题: 在第 10 行和第 16 行,您可以对两个参数使用 %d 格式说明符。代码将是 printf("\nEnter Matrix A: %d, %d\n", i + 1, j + 1);

但是,您不应使用这些线来暗示矩阵维度。您可以写类似 printf("\nEnter Matrix A: which is (%d by %d) matrix\n", r, c); 的内容来表示矩阵维度。