edit:将代码更改为我的真实代码,因为我被告知我发布的缩短代码无法编译。 希望它有助于找到问题
我有一个结构如下:
struct patient {
char name[30], ID[8];
int age, phoneNo;
};
我编写了下面的代码:
int searchName()
{
char search[30];
char record[60];
const char s[2] = ",";
struct patient c;
int foundRecord = 0, linectr = 0;
char a[8], str[200], tempname[] = "tempfile.txt", filename[] = "patient.txt";
int IDno, temp = 999999;
FILE* fPtr, *fPtr2;
fPtr = fopen(filename, "r");
printf("Enter name to to replace phoneNo with 999999: ");
getchar();
fgets(search, 30, stdin);
//remove the 'n' at the end of string
search[strcspn(search, "n")] = 0;
printf("Record found: ");
while (fgets(record, 60, fPtr))
{
// strstr returns start address of substring in case if present
if (strstr(record, search))
{
char* pStr = strtok(record, ",");
if (pStr != NULL) {
strcpy(c.ID, pStr);
}
pStr = strtok(NULL, ",");
if (pStr != NULL) {
strcpy(c.name, pStr);
}
pStr = strtok(NULL, ",");
if (pStr != NULL) {
c.age = atoi(pStr);
}
pStr = strtok(NULL, ",");
if (pStr != NULL) {
c.phoneNo = atoi(pStr);
}
printf("n%st%st%dt%d", c.ID, c.name, c.age, c.phoneNo);
foundRecord++;
}
}
if (foundRecord = 0)
printf("%s cannot be foundn", search);
strcpy(a, c.ID);
sscanf(a, "PT%d", &IDno);
fPtr = fopen(filename, "r");
fPtr2 = fopen(tempname, "w");
while (!feof(fPtr))
{
strcpy(str, "