gpt4 book ai didi

c - 函数获取单词并将它们放入数组中

转载 作者:行者123 更新时间:2023-11-30 16:43:56 24 4
gpt4 key购买 nike

我需要编写一个 C 函数,从用户那里获取他想要输入的单词数,然后该函数必须扫描用户的单词以及数组中的单词。

例如:

程序:

number of words:

用户:

3
hi
my
name

(每个单词之间有 Enter)然后函数必须将这些单词放入字符串数组(数组的大小必须由 malloc 定义,字符串的最大大小为 100(可以更小))。

int main()
{
int n;
printf("Please enter the number of words: \n");
if (scanf("%d",&n)!=1)
return 0;
char *name;
name = malloc((sizeof(char)*100*n));
int c;
int i;
int m;
for (i = 0; i < n && ((c=getchar()) != EOF );i++)
{
name[i] = c;
}
finds_themin(&name, m); //I know this work
return 0;
}

最佳答案

您需要设置一个指向指针的指针。

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

int main(){

char **s;
int n;
char buffer[64];
fgets(buffer,64,stdin);
n=strtol(buffer,NULL,10);// I avoid using scanf

s=(char **)malloc(sizeof(char*)*n);// you need to declare a pointer to pointer

/*
'PtP s' would look like this:
s[0]=a char pointer so this will point to an individual string
s[1]=a char pointer so this will point to an individual string
s[2]=a char pointer so this will point to an individual string
....

so you need to allocate memory for each pointer within s.
*/
int i;
for(i=0;i<n;i++){
s[i]=(char*)malloc(sizeof(char)*100);// length of each string is 100 in this case
}

for(i=0;i<n;i++){

fgets(s[i],100,stdin);

if(strlen(s[i])>=1){// to avoid undefined behavior in case of null byte input
if(s[i][strlen(s[i])-1]=='\n'){ // fgets also puts that newline character if the string is smaller than from max length,

s[i][strlen(s[i])-1]='\0'; // just removing that newline feed from each string
}

else{

while((getchar())!='\n'); //if the string in the command line was more than 100 chars you need to remove the remaining chars for next fgets
}
}
}

for(i=0;i<n;i++){
printf("\n%s",s[i]);
}
for(i=0;i<n;i++){
free(s[i]); //avoiding leaks
}
free(s);
}

关于c - 函数获取单词并将它们放入数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44859765/

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