我試圖在由字符串和整數的外部文件(.DAT)讀取,格式如下:如何存儲陣列中的字符串和整數用C
串1
串2
串3等
並存儲這些值代入單獨的陣列(一個陣列爲字符串,一個用於整數)。但是,我只能設法分配文件中的第一個整數,所有後續的整數和任何存在的字符串都不會被分配。這裏是我的這部分partiular代碼:
char string[20]; /*20 is used as a placeholder for the time being*/
int integer[20];
FILE *inp2; /*pointer to input file 2*/
int file_succeed1 = fopen_s(&inp2,"C:\\Users\\input2b.dat", "r"); /*Boolean test*/
if (file_succeed1 != 0)
{
printf_s("There was an error opening the file \n");
return 0; /*The file failed to be read, end of program.*/
}
for(i = 0; i <=20; i++)
{
fscanf_s(inp2, "%s", &string[i], 20);
fscanf_s(inp2, "%d", &integer[i]);
}
fclose(inp2); /*close the input file*/
要打印的信息時,我得到的警告信息:
警告C4477:「printf」式:格式字符串「%s」的要求的參數鍵入「字符*」,但可變參數的參數1的類型爲「詮釋」
警告C4313:「printf的」:「%s」的格式字符串衝突與參數1類型「詮釋」
的我已經成功讀入和分配只包含整數的外部文件的值,如何在這種情況下,無法弄清楚如何分配字符串或隨後的整數。任何幫助非常感謝。謝謝。
注:我已明確建議不要使用多維數組,但平行數組是可以的。
如果'printf'給你帶來錯誤,你爲什麼要貼一些不同的東西?另外:它應該是'fscanf_s(inp2,「%s」,string [i],20);'這會導致下一個問題:對於一個字符串只有一個緩衝區,您想如何保護其他字符串沒有更多的記憶?你可以不使用二維數組,但這會變得更加複雜。 – deamentiaemundi