我一直希望能夠幫助我使用一些輸入和2維數組來處理我爲某個任務編寫的程序的方法。編程語言是CI得到了一些輸入參數:函數的2d char數組的輸出參數
FILE * IFP =輸入文件指針,主打開了,打開一個txt文件,每行
字符的字符串3的格式** firstTokens,middleTokens = 2維字符數組,我希望他們在每個字符串的末尾(如逗號和句點)保留前兩個字符串減去預期的標點符號。計劃成爲輸出參數。
char * lastLetter =任何字符串的第一個字母在txt文件中每行的最後一列中。計劃成爲輸出參數。
INT numberOfLines =我期待從文本文件中讀取行數
這是我的主要函數調用的方法:
readLine(ifp, firstTokens, middleTokens, lastLetter, numberOfLines);
我想我的問題是正確獲取firstTokens
和middleTokens
,因爲我在編輯過程中總是收到編譯器錯誤和分段錯誤。一些幫助/澄清錯誤將不勝感激。
void readLine(FILE * ifp, char ** firstTokens, char ** middleTokens, char* lastLetter, int numberOfLines)
{
char* tempFirst;
char* tempMiddle;
char* tempLast;
char delim[4];
delim[0] = '.';
delim[1] = '\0';
delim[2] = '\n';
delim[3] = ',';
int i;
for(i = 0; i < numberOfLines; i++)
{
fscanf(ifp, "%s %s %s", tempFirst, tempMiddle, tempLast);
*firstTokens[i] = strtok(tempFirst, delim);
*middleTokens[i] = strtok(tempMiddle, delim);
lastLetter[i] = tempLast[0];
}
}
char ** firstTokens被稱爲指針(在你的情況下)char的指針。除非你爲它分配內存,否則期望未定義的行爲。 – farmdve
沒有內存分配給'fscanf()'的目標。 – hmjd
不幸的是'strtok'不能在''\ 0''字符上標記。它想要一個合適的C字符串作爲它的最後一個參數,這意味着它在該字符上結束。所以你只能在這個字符上加上標記。 –