【问题标题】:"too many arguments for format" warning“格式参数太多”警告
【发布时间】:2015-04-27 20:36:50
【问题描述】:
#include <stdio.h>

#define N 11
enum {FALSE, TRUE};
typedef int adj_mat[N][N];

int path2(adj_mat A, int u, int v, int temp)
{
if(u == temp && A[u][v] == TRUE)
return TRUE;

if(A[u][v] == FALSE)
return path2(A, u-1, v, temp);

if(A[u][v] == TRUE)
return path2(A, N, u, temp);

return FALSE;
}

int path(adj_mat A, int u, int v)
{
return path2(A, N, v, u);
}



int main()
{

int arr[N][N]= {{0,1,1,1,0,0,0,0,0,0,0},{0,0,0,0,1,1,1,1,1,0,0},
{0,0,0,0,0,0,0,0,0,1,0},{0,0,0,0,0,0,0,0,0,0,1},{0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0}};
int u;
int v;
printf("please enter two numbers \n");
scanf("%d %d", &u, &v);
printf("The answer is %d" "\n", path(arr, u, v),".\n");
return 0;
}

程序需要检查在给定的 11X11 矩阵中是否存在表示树的 2 个给定索引 (u,v) 之间的路径。 当我尝试在终端编译时,我得到了这个按摩:

adjacency.c:41:1:警告:格式参数过多 [-Wformat-extra-args] 除此之外,该程序不起作用。如果我输入 (1,8) 它应该返回 true 但它返回 false。

【问题讨论】:

  • 您的最后一个 printf 只有一个格式说明符 (%d),但您给了它两个参数,path(...)".\n"
  • tnx.但是当我放 (1,8) 它返回 0 但它应该返回 1
  • 什么意思返回0?什么返回 0?
  • 对不起,我没有附上图片,但如果你看一下矩阵,如果我使用 path(1,8) 它应该返回 TRUE,因为 1 有到 8 的路径。但它返回 FALSE跨度>
  • 您对pathpath2 的论点似乎混淆了。从path(A, u, v) 调用path2(A, N, v, u)path2 的声明是path2(A, u, v, temp)。这是你的意图吗?

标签: c matrix adjacency-matrix


【解决方案1】:

您的格式说明符 "The answer is %d""\n" 用于一个参数,但您传递了两个参数,path(arr, u, v)".\n"

printf("The answer is %d" "\n", path(arr, u, v),".\n");

大概你需要

printf("The answer is %d.\n", path(arr, u, v));

【讨论】:

  • 伟大的 tnx 现在可以了。但钢返回 0 :/
猜你喜欢
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 2013-01-31
  • 1970-01-01
  • 1970-01-01
  • 2017-08-09
  • 1970-01-01
  • 2011-10-07
相关资源
最近更新 更多