![](/img/trans.png)
[英]reading hex value from .txt file and storing it into unsigned char array[ ]
[英]C - Reading from a .txt file and storing the characters inside an array
我有一个名为“exampleWheel.txt”的 .txt 文件,其中包含 10 个字符:A、M、W、O、S、E、G、L、P、H。
我正在尝试将字符存储在数组中,以便稍后根据每个字符在数组中的位置引用每个字符。
这是我的尝试:
#include <stdlib.h>
int main()
{
FILE * fPointer;
fPointer = fopen("exampleWheel.txt","r");
int i = 0;
char singleLine[150];
const char *array[10];
while(!feof(fPointer)){
fgets(singleLine, 150, fPointer);
array[i] = singleLine;
printf("%d\n",&array[i]);
printf("%s\n", array[i]);
i++;
}
fclose(fPointer);
printf("array[0] = %c\n", array[0]);
printf("array[1] = %c\n", array[1]);
return 0;
}
while 循环中的 printf 语句返回正确的输出,但 while 循环外的两个 printf 语句返回错误的结果。
即printf("array[0] = %c\\n", array[0])不返回数组的第一个字符
请告诉我如何改进我的代码。 先感谢您!!
array[i] = singleLine;
存储指向 singleLine 字符数组的指针,但它将被循环中的下一个 fgets 调用覆盖。 作为替代方案,您可以在此处使用例如二维数组并简单地保存第一个字符。array
,否则你写在数组的末尾您稍微修改后的代码可能如下所示:
#include <stdlib.h>
#include <stdio.h>
#define MAX_LINES 10
int main() {
char singleLine[150];
char array[MAX_LINES][2];
FILE *fPointer;
if ((fPointer = fopen("exampleWheel.txt", "r")) == NULL) {
fprintf(stderr, "can't open file");
exit(1);
}
int i = 0;
while (i < MAX_LINES && fgets(singleLine, 150, fPointer)) {
array[i][0] = singleLine[0];
array[i][1] = '\0';
printf("%d\n", *array[i]);
printf("%s\n", array[i]);
i++;
}
fclose(fPointer);
printf("array[0] = %c\n", array[0][0]);
printf("array[1] = %c\n", array[1][0]);
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.