gpt4 book ai didi

c - C 中的字符串中添加了不需要的字符

转载 作者:行者123 更新时间:2023-11-30 21:04:28 24 4
gpt4 key购买 nike

我有一个程序,可以从输入文件中为您提供送货地址。然而,在其中一个字符串 order.add_one 的开头,一个数字被添加到字符串的开头,该数字每次都相当于变量“choice”。为什么要这样做?

#include <stdio.h>
#include <math.h>
#include <string.h>

//structure
typedef struct
{char cust_name[25];
char cust_id[3];
char add_one[30];
char add_two[30];
char bike;
char risky;
int number_ordered;
char cust_information[500];
}ORDER;

ORDER order;

int main(void){
fflush(stdin);
system ( "clear" );



FILE *fpt;
fpt = fopen("input.txt", "r");

if (fpt==NULL){
printf("Text file did not open\n");
return 1;
}

printf("Enter Customer ID: ");
scanf("%s", &order.cust_id);

char choice;
choice = order.cust_id[0];

char x[3];
int w, u, y, z;
char a[10], b[10], c[10], d[10], e[20], f[10], g[10], i[1], j[1];
int h;
printf("%s value of c", c);

if (choice >='1'){
while ((w = fgetc(fpt)) != '\n' ){
}
}
if (choice >='2'){
while ((u = fgetc(fpt)) != '\n' ){
}
}
if (choice >='3'){
while ((y = fgetc(fpt)) != '\n' ){
}
}
if (choice >= '4'){
while ((z = fgetc(fpt)) != '\n' ){
}
}
printf("\n");
fscanf(fpt, "%s", x);

fscanf(fpt, "%s", a);
printf("%s", a);
strcat(order.cust_name, a);

fscanf(fpt, " %s", b);
printf(" %s", b);
strcat(order.cust_name, " ");
strcat(order.cust_name, b);

fscanf(fpt, "%s", c);
printf(" %s", c);
strcat(order.add_one, "\0");
strcat(order.add_one, c);

fscanf(fpt, "%s", d);
printf(" %s", d);
strcat(order.add_one, " ");
strcat(order.add_one, d);

fscanf(fpt, "%s", e);
printf(" %s", e);
strcat(order.add_two, e);

fscanf(fpt, "%s", f);
printf(" %s", f);
strcat(order.add_two, " ");
strcat(order.add_two, f);

fscanf(fpt, "%s", g);
printf(" %s", g);
strcat(order.add_two, " ");
strcat(order.add_two, g);
strcat(order.add_two, "\0");

fscanf(fpt, "%d", &h);
printf(" %d", h);
order.number_ordered = h;

fscanf(fpt, "%s", i);
printf(" %s", i);
order.bike = i[0];

fscanf(fpt, "%s", j);
printf(" %s", j);
order.risky = j[0];
fclose(fpt);

printf("%s %s %s %d %c %c", order.cust_name, order.add_one, order.add_two, order.number_ordered, order.bike, order.risky);
}

最佳答案

这里有一个重大错误:

char ..., i[1], ...

...

fscanf(fpt, "%s", i);

fscanf的调用将覆盖其他内存,即使它只读取一个字符fscanf添加一个第二个字符,特殊字符串终止符'\0'

如果您将其他数组的大小设置为恰好输入文件中字段的大小,那么您的所有输入都会发生这种情况。

关于c - C 中的字符串中添加了不需要的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12905181/

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