我一直在使用文本文件,但不知何故,我一直在收到一個奇怪的錯誤。當我嘗試獲取字符串的第1,第2,第4和第5部分時(':'
是分隔符),我得到一個奇怪的響應。這是我想讀: 1000:產品:0.75:5:0C:字符串從緩衝區被錯誤複製
而且我得到這種答案:
8 |X |0
75(
下面是代碼:
int main(){
char c,buff[100],prod[30],id[8],stock[8],vendas[8];
int i=0,n=0,num=0;
FILE *fp;
fp=fopen("products.txt","r+");
printf("Lista de produtos(Num |Produto |Stock |Vendas)\n");
while(fgets(buff,100,fp)){
for(n=0;n<strlen(buff);n++){
if(buff[n]==':'){
num++;
i=0;
}
else if((buff[n]!=':')&&(num==0)){
id[i]=buff[n];
i++;
}
else if((buff[n]!=':')&&(num==1)){
prod[i]=buff[n];
i++;
}
else if((buff[n]!=':')&&(num==3)){
stock[i]=buff[n];
i++;
}
else if((buff[n]!=':')&&(num=4)){
vendas[i]=buff[n];
i++;
}
}
i=0;
num=0;
printf("%s |%s |%s |%s\n",id,prod,stock,vendas);
memset(id,0,8);
memset(prod,0,30);
memset(stock,0,8);
memset(vendas,0,8);
}
printf("Prima qualquer tecla para sair");
getchar();
return 0;
}
任何幫助,將不勝感激。對不起,如果這個問題或我的代碼不是最好的。 祝您有美好的一天!
'%s'格式說明符期望以null爲終點的stirng作爲參數 –
當您從一種狀態切換到另一種狀態時,可能要考慮終止這些字符串。 – WhozCraig
您也可以考慮使用strtok將字符串拆分爲多個部分。 – Gerhardh