gpt4 book ai didi

c - 尝试将 char 数组传递给函数

转载 作者:行者123 更新时间:2023-11-30 17:20:14 25 4
gpt4 key购买 nike

我正在尝试将 char 数组传递给我正在创建的函数,以便我可以查看两个汽车 ID 是否相等。我正在创建的函数名为 mpg,它接受 char *id。如果传递给该函数的 ID 等于任何汽车的 ID,它会打印出 1。顺便说一句,该 ID 也是一个字符串。我对 C 编程非常陌生,所以任何帮助都会很好。有任何问题请追问。

汽车信息栏分别为号码、ID、里程表、加仑。

汽车信息

0 987654 201200 4.000000
1 red 89114 0.000000
2 red 89712 13.500000
3 red 90229 15.300000
4 987654 201001 0.000000
5 987654 201111 5.200000
6 987654 201612 25.299999
7 red 89300 7.100000
8 green 16 0.000000
9 green 216 20.000000
10 green 518 61.000000
11 green 879 50.000000

代码

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>
#define numberOfRecords 12

struct record
{
char *id;
int odometer;
float gallons;
};
typedef struct record gasRecord;

gasRecord gasDataArray[numberOfRecords];

void mpg(char*);

int main(int argc, char *argv[])
{
FILE *fileInput;
float gallons;
int element, odometer;
char id[10];
char test[10] = {"987654"};

fileInput = fopen("gasData.txt", "r");
if (fileInput == NULL)
{
printf("cannot open `gasData.txt'\n");
return -1;
}

for(element = 0; element < numberOfRecords; element++)
{
if(feof(fileInput))
{
printf("end-of-file detected on file\n");
exit(1);
}

if (fscanf(fileInput, "%s %d %f", id, &odometer, &gallons) == 3)
{
gasDataArray[element].id = malloc (strlen(id)+1);
strcpy(gasDataArray[element].id, id);
gasDataArray[element].odometer = odometer;
gasDataArray[element].gallons = gallons;

printf("Record #: %d id = %s, odometer = %d, gallons = %f\n",
element, gasDataArray[element].id, gasDataArray[element].odometer, gasDataArray[element].gallons);
}
}

printf("Test ID = %s\n", test);

mpg(test);

return 0;
}

void mpg(char *id)
{
int i;

for(i = 0; i < numberOfRecords; i++)
{

if (gasDataArray[i].id == id)
{
printf("1");
}
}
}

编辑代码

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>

#define numberOfRecords 12

struct record
{
char *id;
int odometer;
float gallons;
};
typedef struct record gasRecord;

gasRecord gasDataArray[numberOfRecords];

void mpg(char*);

int main(int argc, char *argv[])
{
FILE *fileInput;
float gallons;
int element, odometer;
char id[10];
char test[10] = {"red"};

fileInput = fopen("gasData.txt", "r");
if (fileInput == NULL)
{
printf("cannot open `gasData.txt'\n");
return -1;
}

for(element = 0; element < numberOfRecords; element++)
{
if(feof(fileInput))
{
printf("end-of-file detected on file\n");
exit(1);
}

if (fscanf(fileInput, "%s %d %f", id, &odometer, &gallons) == 3)
{
gasDataArray[element].id = malloc (strlen(id)+1);
strcpy(gasDataArray[element].id, id);
gasDataArray[element].odometer = odometer;
gasDataArray[element].gallons = gallons;

printf("Record #: %d id = %s, odometer = %d, gallons = %f\n",
element, gasDataArray[element].id, gasDataArray[element].odometer, gasDataArray[element].gallons);
}
}

printf("Test ID = %s\n", test);

mpg(test);

return 0;
}

void mpg(char *id)
{
int i, minMile = 0, maxMile = 0;

for(i = 0; i < numberOfRecords; i++)
{

if (strcmp(id, gasDataArray[i].id))
{
printf("1");
}
}
}

最佳答案

在 C 语言中,您无法将字符串与 == 进行比较。 – alain

我刚刚使用了 strcmp,它运行得很好。我太习惯 C++ 了,所以这种编程对我来说是新的。谢谢阿兰 - 约翰尼·安德烈

关于c - 尝试将 char 数组传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28650605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com