gpt4 book ai didi

c - 如何将静态数组转换为动态数组?

转载 作者:太空宇宙 更新时间:2023-11-04 08:40:55 28 4
gpt4 key购买 nike

我是 C 的新手,我发现很难将我的程序从使用静态数组转换为使用动态分配的数组。

这是我的第三个程序(统计字数等形成一个 .txt 文件)。

那么我需要做哪些改变才能在我的程序中使用动态数组而不是静态数组?

这是我的代码的一部分:

int main(int argc, char *argv[]) { 
FILE *myinput;
int count=0, a, userchoice,i=0, wrd,chrct,dfw,j,b,k;
char arr[100][50], name[0][50];

printf("Ender the name of the file you want to open: ");
scanf("%s", name[0]);
if((myinput = fopen(name[0], "r"))==NULL)
{
printf("Failed to open the file!");
exit(1);
}
else
{
printf("Reading %s.. Done!\n\n", name[0]);
printf("%s contein: ", name[0]);
}
while(wrd > 0)
{
wrd = fscanf(myinput, "%s",arr[i]);
i++; //counting words in a line from txt file.
}
wrd = i;
for(i = 0; i < wrd - 1; i++)
{
printf("%s ", arr[i]);
}
printf("\n");
while(userchoice!=5)
{
switch(userchoice=choice()) //choice() is a function just with a scanf.
{



case 1: wrd=countwords(myinput); break;
case 2: chrct=coutnchar(myinput); break;
case 3: dfw=diffrentwords(wrd,arr); break;
case 4: istograma(wrd,arr); break;
default: break;
}
}
results(wrd,chrct,dfw,myinput,arr,wrd);
fclose(myinput);
return 0;
}

以下是一些函数:

int choice(){
int choice;
printf("\n1: count words \n2: count characters \n3: count different words \n4: Istogramma\n5: Save and exit\n");
printf("enter choice:\n");
scanf("%d", &choice);
return choice;
}

这是直方图函数:

istograma(int wrd, char arr[100][50]){
int j, i = 0, len;

for(i = 0; i < wrd - 1; i++){
printf(" %s ",arr[i]);
len=strlen(arr[i]);
for(j=0; j<len; j++){
printf("*");
}
printf("\n");
}
}

最佳答案

char name[0][50]; 你是说 [1][50] 吗?

对于 char arr[100][50]:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
char (*arr)[50];
int i;

arr = malloc(sizeof(*arr) * 100);
if (arr == NULL) {
perror("malloc");
exit(EXIT_FAILURE);
}
for (i = 0; i < 100; i++)
strcpy(arr[i], "test");
for (i = 0; i < 100; i++)
printf("%s\n", arr[i]);
free(arr);
return 0;
}

关于c - 如何将静态数组转换为动态数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23608391/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com