我有一个大小为8乘12(8行,12列)(x,y)的文本文件
abcdefghjikl
123456789abc
aerereghjikl
123456789abc
abc43434dfdf
12erere789ab
abcdefghjikl
12345fdfd89a
Run Code Online (Sandbox Code Playgroud)
我正在尝试将每个单独的字符读入2d数组,其中第一个维度是行,第二个维度是列.
这就是我尝试过的:
int main(void) {
FILE * fp;
fp = fopen("test.txt","r");
char points[8][12];
int i,j;
for(i=0; i<8; i++) {
for(j=0; j<12; j++) {
fscanf(fp,"%c",&points[i][j]);
}
}
for(i=0; i<8; i++) {
for(j=0; j<12; j++) {
printf("%c",points[i][j]);
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是我的输出似乎正常工作,直到文件的最后一行.
abcdefghjikl
123456789abc
aerereghjikl
123456789abc
abc43434dfdf
12erere789ab
abcdefghjikl
12345
Run Code Online (Sandbox Code Playgroud)
最后一行没有完全奏效的地方.我已经尝试增加行的数组维度,这会使最后一行出现,但会向我的输出添加垃圾值.任何帮助将非常感激.
顾名思义,换行符也是字符.你应该发现你的输出保留换行符是可疑的.
实际上文件的每一行有13个字符(假设是unix系统).十二个可打印的,换行.
因此,对于i = 1 ... 7,每个"行"中的第一个字符是换行符.
幸运的是,scanf可以指示在等待字符输入时跳过空格字符.只需在格式说明符字符串的开头添加一个空格:
fscanf(fp, " %c", &points[i][j]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2080 次 |
| 最近记录: |