c语言如何将多个字符串放入数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言如何将多个字符串放入数组相关的知识,希望对你有一定的参考价值。

c语言如何将多个字符串放入数组

方法一:使用二维字符数组,示例:
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char *argv[])

char c[][5] = "abc","haha","no";
for (int i=0; i<3; i++)

printf("%s\n",c[i]);

return 0;

方法二:使用 string 数组,示例:
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
int main(int argc, char *argv[])

string s[] = "abc","haha","no";
for (int i=0; i<3; i++)

printf("%s\n",s[i].c_str());

return 0;
参考技术A 举个例子,这里str是一个二维数组,手动输入10个字符串存入该数组,然后用该二维数组的行指针输出
#include<stdio.h>
#include<string.h>
void main()

char str[10][20];
int i;
for(i=0;i<10;i++)
gets(*(str+i));
for(i=0;i<10;i++)
puts(*(str+i));
参考技术B 举个例子,这里str是一个二维数组,手动输入10个字符串存入该数组,然后用该二维数组的行指针输出
#include<stdio.h>
#include<string.h>
void main()

char str[10][20];
int i;
for(i=0;i<10;i++)
gets(*(str+i));
for(i=0;i<10;i++)
puts(*(str+i));
参考技术C 用二维数组
如a[10][10] 就可以往a中读入10个小于10的字符串。
参考技术D #include<stdio.h>
main()
char ch[100];
gets(ch);//获得用户输入的字符串
puts(ch);//输出。。。。。。

我的是最短的,哈哈

C如何将.txt文件的内容放入二维数组

【中文标题】C如何将.txt文件的内容放入二维数组【英文标题】:C how to put content of .txt file into 2D array 【发布时间】:2022-01-01 02:27:02 【问题描述】:

使用 C 语言时,我试图逐行读取 .txt 文件,然后将每一行放入一个数组中。每行最多 200 个字符,数组可以存储,比如说 50 行。如果行数超过50,我想动态分配两倍的内存,以此类推,直到足够为止。如果我将 if... 部分放在 while 循环之外,它似乎可以工作,但是一旦我在循环内部使用它,它就不会。我将不胜感激。

FILE *fp=fopen(file,"r");
int idx=0;
int row=50;
int col=300;
char temp[row][col];
while (fgets(temp[idx],col,fp))
    if (idx == row) 
        char **new = malloc(2 * row * sizeof(char *));
        for (int j = 0; j < row; j++) 
            new[j] = (char *) malloc(col * sizeof(char) + 1);
        
        for (int i = 0; i < row; i++) 
            for (int j = 0; j < (col + 1); j++) 
                new[i][j] = temp[i][j];
            
        
        row = 2 * row;
        **temp = **new;
        free(new);
    
    idx++;

fclose(fp);

【问题讨论】:

分配**temp = **newtemp[0][0] = new[0][0] 相同。那是你的意图吗?你也永远不会免费new[i] 【参考方案1】:

您不能更改本地数组的维度(此处为 temp[row][col])。相反,您需要保留指向此类数组的指针。在下面的代码中,我使用temp 数组只是为fgets 保留一行,然后立即将其复制到动态分配的存储中(arr 是行的二维数组):

FILE *fp=fopen(file,"r");
int idx=0;
int row=50;
int col=300;
char temp[col];
char **arr = malloc(row*sizeof(char*));
while (fgets(temp,col,fp))
    if (idx == row) 
        char **new = realloc(arr, 2 * row * sizeof(char *));
        if(!new) abort();
        arr = new;
        row *= 2;
    
    arr[idx++] = strdup(temp);

fclose(fp);

【讨论】:

以上是关于c语言如何将多个字符串放入数组的主要内容,如果未能解决你的问题,请参考以下文章

c语言如何分割字符串并将结果放入数组?

php怎样把一个数组放入另一个数组的子数组里面

C# SQL语句查询出来的字段放入数组中

c语言:生产元素全为零的数组zero[100],将一个整数1随机放入,采用顺序查找法查找并记录步数,

c语言 如何实现字符串由右向左读取且删除指定字符之前的所有字符?

C如何将.txt文件的内容放入二维数组