-1

我正在做一个程序,询问用户姓名和 ID 号......然后我添加了一个搜索功能,例如搜索名称“bob”它说“Bob 在数组位置 x 中找到,ID:xxxxx”

我的问题是代码的“ID:xxxx”部分给了我随机数......它应该是例如1234,但它给了我像4210832这样的东西

这是代码

void search_surname()
{
    int index, found=0;
    char surname_to_find[10];

    printf("Please enter the student surname to search for\n\n");
    gets(surname_to_find);
    fflush(stdin);
    system("cls");
    for(index=0;index<height_of_array;index++)
    {

        if(strcmpi(surname_to_find, surname[index]) == 0)
        {
            found=1;

            system("cls");                                                      
            printf("%s found in array position %i, with the ID: %i \n\n", surname_to_find,     
            index+1, id[array_index] );
            getch();

我不是 100% 确定为什么它给我随机数

谢谢。

4

2 回答 2

1

您发布的代码如此不完整,以至于无法指出确切的答案。因此,一种解决问题的方法:

  • 首先,您使用id[array_index]而不是id[index],这很奇怪,因为index您的 for 循环中的变量也是如此。(array_index未在您的函数中定义;它是全局变量吗?请避免使用全局变量!)。
  • 您的示例代码中没有任何id地方被填充,甚至没有被声明。确认已正确填写。在不填写值的情况下使用id会打印出奇怪的东西(未初始化)。调试器应该使确认其正确填充变得容易。否则,只需循环并打印出来。
  • 使用调试器来观察你的程序运行。

最后一件事:C 有结构。没有理由使用这样的多个数组。

struct surname_info {
    unsigned int id;
    const char *surname;
};
⋮
struct surname_info surnames[10];
surnames[0].id = 1234;
surnames[0].surname = "Bob";
/* etc */
于 2012-05-22T16:47:18.543 回答
1

更改id[array_index]id[index]

于 2012-05-22T16:34:25.340 回答