[英]Separating a line of text into two arrays in C
我正在編寫一個翻譯程序,給出了英語轉換的文本文件。 每行文字看起來像
你好
再見;阿迪奧斯
我想將兩個單詞分成兩個不同的char數組
char [] eng;
char [] span;
現在我必須讀入文件並將每個單詞存儲在數組中
int currentChar;
while( currentChar != EOF ) {
fscanf(inFile, "%[^;]c, %c", eng, span);
printf("%s", eng);
currentChar = fgetc( inFile );
}`
當我打印出eng時,它給我兩個單詞,但沒有; 所以輸出看起來像
你好
再見
我是C的新手,所以任何技巧都可以幫助您
對於初學者,您可以像下面這樣修改fscanf行:
fscanf(inFile, "%[^;];%s", eng, span);
但是,您仍然必須考慮可能的緩沖區溢出或輸入行格式錯誤。
我認為這就是您要尋找的東西,至少會給您一個關於在給定輸入格式的情況下如何使用fscanf格式字符串的想法。 您還需要添加邏輯以防止緩沖區溢出。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void getTwoLanguages(FILE *inFile, char **language1, char **language2);
int main()
{
char *en[1024], *sp[1024];
int i;
// Get the phrase pairs
getTwoLanguages(stdin, en, sp);
// Output
for (i = 0; en[i] && sp[i]; i++)
printf("%s <-> %s\n", en[i], sp[i]);
// Cleanup
for (i = 0; en[i]; i++)
free(en[i]);
for (i = 0; sp[i]; i++)
free(sp[i]);
return 0;
}
void getTwoLanguages(FILE *inFile, char **language1, char **language2)
{
char working1[256], working2[256];
while (!feof(inFile)
&& fscanf(inFile, "%[^;\n\r]%*[;\n\r]%[^;\n\r]%*[;\n\r]", working1, working2) == 2)
{
/* Save the token and NULL the next one to indicate EOL */
*language1++ = strdup(working1);
*language1 = NULL;
*language2++ = strdup(working2);
*language2 = NULL;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.