[英]Read From File and Store Strings into a Multidimensional Array of Strings in C
我真的需要知道如何解決這個問題。
我有一個已讀取的文件,並將文件中的字符串存儲到作為參數傳遞的數組中,但是我不知道如何使它工作。
當我打印數組的內容時,它表示null
。 那么,如何將多維字符串數組傳遞給readfiles()
並使其將字符串保存在作為參數傳遞的數組中,每個字符串都位於一個位置?
謝謝您的幫助。
#include <unistd.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <stdio.h>
#include <strings.h>
#define max_chars_string 10000
#define n_strings 100
int main(int argc, char **argv)
{
char *filename;
char strings_hashes[n_strings][max_chars_string];
char * pointer_string = &strings_hashes[0][0];
int n_lines;
int i = 0;
filename = (char*)malloc(strlen(argv[1])*sizeof(char));
if(argc !=3){
fprintf(stderr, "Usage : %s [text_file] [cores]",argv[0]);
exit(0);
}
strcpy(filename,argv[1]);
read_lines(filename,pointer_string);
for(i = 0; i<n_lines;i++){
printf("%s \n",strings_hashes[i][max_chars_string]);
}
return 0;
}
void read_lines(char * filename, char *pointer){
FILE *fp;
char str[max_chars_string];
int i =0;
if((fp = fopen(filename, "r"))==NULL) {
printf("Cannot open file.\n");
exit(1);
}
while(!feof(fp)) {
while(fgets(str, sizeof str, fp)) {
strcpy(pointer, str);
printf("%s", str);
pointer++;
i++;
}
}
fclose(fp);
}
更改
void read_lines(char * filename, char *pointer){
至
void read_lines(char * filename, char (*pointer)[max_chars_string]){
( pointer
的類型必須是“指向max_chars_string
char
數組的指針”。當使用指針訪問多維數組時,指針類型需要知道除最外面的維之外的所有維,以便知道跳到多遠。以及增加時)。
更改
strcpy(pointer, str);
至
strcpy(*pointer, str);
現在稱它為
read_lines(filename,strings_hashes);
(這等效於以下內容,可能會更清楚:)
read_lines(filename,&string_hashes[0]);
最后,您要打印字符串而不是單個字符,因此請使用
printf("%s \n",strings_hashes[i]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.