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);
的内容来表示矩阵维度。
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);
的内容来表示矩阵维度。