Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 用文件内容填充字符串数组_C_Arrays_String - Fatal编程技术网

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