gpt4 book ai didi

使用指针从 csv 文件复制行

转载 作者:行者123 更新时间:2023-11-30 16:39:14 24 4
gpt4 key购买 nike

我正在编写一个程序,该程序应该在 CSV 文件中搜索名称并复制与其相关的记录(所有信息与名称位于同一行)。

例如,如果 CSV 文件包含:

Bob, 13, 12345612
Eli, 12, 21398743

我会输入“Bob”来获取第一行,并将其复制到名为“record”的数组中。

到目前为止我的代码如下:

#include<stdio.h>
#include<stdlib.h>

void FindRecord(char *a, char *b, char c[]);

void main(void){

char arrayName[100];
char arrayNewname[100];
char *name = arrayName;
char *newname = arrayNewname;
char record[1000];

printf("Please input a name in the phonebook: ");
scanf("%s", name);

printf("Please input a replacement name: ");
scanf("%s", newname);

FindRecord("phonebook.csv",name,record);
}

void FindRecord(char *filename, char *name, char record[]){

//Create temp array of max size
char temp[1000];

//Open file
FILE *f = fopen(filename, "r");
//Make sure file exists
if (f == NULL){
printf("File does not exist");
fclose(f);
exit(1);
}

//While
while(!feof(f)){
//Read one line at a time
fgets(temp, 1000, f);
int i = 0;
int *p;
for(int i = 0; i < 1000; i++){
if(temp[i] == *name){
record[i] = temp[i];
name++;
}
size_t n = (sizeof record /sizeof record[0]);
if(temp[i] == *name){
*p = temp[i + n];
}
}
}
printf("%s", record);
fclose(f);
}

基本上,我找到了 Bob 并复制了 Bob,但不明白如何继续使用指针(不允许使用 string.h)并复制该行的其余部分。一旦我找到了这个词,我就一直在尝试调整它的长度,但是由于指针的原因,这也不起作用。任何帮助/提示将不胜感激。

最佳答案

当您不允许使用string.h时,您必须逐个字符地比较字符串。首先循环查找名称。

参见:Compare two strings character by character in C

然后复制记录的其余部分。可以逐个字符,也可以使用更高级的函数,例如 memcpy: https://www.techonthenet.com/c_language/standard_library_functions/string_h/memcpy.php

现在谁是int *p

您没有初始化该指针。您必须对其进行 malloc 或将其分配给现有内存。更多信息请参见: https://pebble.gitbooks.io/learning-c-with-pebble/content/chapter08.html

我认为你应该阅读更多有关指针的内容,然后事情会更适合你。

关于使用指针从 csv 文件复制行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47129813/

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