错误"信息"未声明(首次在此函数中使用)

  • 本文关键字:函数 未声明 信息 错误 c
  • 更新时间 :
  • 英文 :


结构有问题。我该如何声明?我需要执行以下操作:

您的函数将返回一个整数。

  • 您的函数应该只接受一个参数(数组(。
  • 您的函数将询问用户将输入的字符数。然后,在你的里面 函数,您将检查此值是否大于或等于 70。如果值大于或等于 70,您将打印出一条错误消息并返回 1。否则,您将使用循环扫描字符 并返回 0。
#include <stdio.h>
struct info {
char name[70];
char lastname[70];
char address[70];
};
void printarray(char name[]) {
int i;
int number;
printf("How many characters will be inputted? n");
printf("It cannot be more than 70!n");
scanf("%d", &number);
printf("What is your name? n");
for(i=0; i<number; i++) {
scanf(" %c", &info.name[i]);
}
return;
}
int main() {
struct info name;
return 0;
}

struct info {
char name[70];
char lastname[70];
char address[70];
};

定义结构模板,而不是结构变量,因此不能使用scanf(" %c", &info.name[i]);struct info因为 是您定义的数据类型。

main()中,您定义了结构变量name

正如您在问题中所说,当number>= 70时,它应该打印错误消息并return 1;但您没有检查错误。

最后,你从来没有打电话给printarray().

您可能希望这样做:

#include <stdio.h>
struct info {
char name[70];
char lastname[70];
char address[70];
};
void printarray(struct info var) {
int i;
int number;
printf("How many characters will be inputted? n");
scanf("%d", &number);
if (number >= 70)
{
printf("Number should be less than 70.n");
return 1;
}
printf("What is your name? n");
for(i=0; i<number; i++) {
scanf(" %c", &var.name[i]);
}
return;
}
int main() {
struct info name;
printarray(name);
return 0;
}

代码有几个缺陷:

  1. 程序应该接收一个 char 数组,而不是结构模板。

  2. 未设置将数字与>= 70进行比较的条件。

  3. 从未使用过函数printarray(char[])

  4. 该函数printarray()不返回任何内容(即 void(,期望返回整数10是不可能的。

  5. 不需要函数最后一行中的return

  6. 标识符info语法:

    scanf(" %c", &info.name[i]); // obviously an error
    

    是类型名称,而不是结构info实例。

旁白:避免使用神奇的数字,当数字不会在任何地方更改时使用常量(例如MAX在给定的程序中保存70整数值(。

重新定义

示例代码如下:

#include <stdio.h>
#define MAX 70
// struct template
struct info {
char name[MAX];
// ...
};
// function declaration
int print_array(info);
int main(void) {
info in;
int exit_code;
// passing a single argument
exit_code = print_array(in);
printf("nExit code was: %dn", exit_code);
return 0;
}
// function definition
int print_array(info i) {
int num;
printf("Enter a number (not >= 70): ");
scanf("%d", &num);
if (num >= 70) {
printf("The input exceeds the limit.n");
return 1;
}
for (int it = 0; it < num; it++)
i.name[it] = getchar();

printf("%sn", i.name);
// ...
return 0;
}

代码将输出:

Enter a number (not >= 70): 30
Hello world, how are you today? hope you're doing good!
Hello world, how are you toda    // rest are truncated
Exit code was: 0