C 用文件内容填充字符串数组
我编写了一段短代码,将文件内容复制到初始化的字符串数组中,然后打印该数组。我没有收到任何错误/警告,但当我运行程序时,它仍然不会打印任何内容。代码如下:C 用文件内容填充字符串数组,c,arrays,string,C,Arrays,String,我编写了一段短代码,将文件内容复制到初始化的字符串数组中,然后打印该数组。我没有收到任何错误/警告,但当我运行程序时,它仍然不会打印任何内容。代码如下: #include<stdio.h> #include<stdlib.h> #include<string.h> const int dim = 30; int main() { char* arr[dim]; int i = 0; FILE* fp; fp = fopen("test.txt",
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
const int dim = 30;
int main() {
char* arr[dim];
int i = 0;
FILE* fp;
fp = fopen("test.txt", "r+");
if(fp == NULL) {
printf("\nError, breaking...");
return 0;
}
while(i <= dim) {
arr[i] = (char *)malloc(dim*sizeof(char *));
++i;
}
i = 0;
while(fscanf(fp, "%s", arr[i]) != EOF) {
printf("%s: added\n", arr[i]);
++i;
}
}
该文件包含一系列仅由空格和换行符分隔的单词 纠正以下内容,看看是否有帮助 1将i初始化为0,即i=0 二,
您声明char*arr[dim],然后使用i@chrisdd谢谢。另外,当你说为每个字符串分配这么多空间没有意义时,你的意思是我在文件中放入一个比dim值长的单词之前都很好吗?@wako-你分配的空间量取决于你机器上指针的大小,这可能与预期阅读的单词长度无关。这种对地址大小的“隐藏”依赖可能会导致以后的可移植性问题。此外,强制转换malloc的返回值被认为是不好的形式。
while(i < dim) { } // it should be < as array start with 0