如何在C中通过函数操作字符串数组?
我试图编写代码,使用函数从stdin读取42个字符串,同时知道我保存了多少字符串。 以下是我到目前为止的想法:如何在C中通过函数操作字符串数组?,c,arrays,string,C,Arrays,String,我试图编写代码,使用函数从stdin读取42个字符串,同时知道我保存了多少字符串。 以下是我到目前为止的想法: #define rows 42 #define chars 101 void populate(int* citiesCount, char cities[][chars]); int main() { char cities[rows][chars]; //array of strings to store all lines of txt file int ci
#define rows 42
#define chars 101
void populate(int* citiesCount, char cities[][chars]);
int main()
{
char cities[rows][chars]; //array of strings to store all lines of txt file
int citiesCount = 0; //how many lines there really are (may be less than 42)
populate(&citiesCount, cities);
//print all cities
printf("NUMBER OF CITIES: %d\n", citiesCount);
for(int i = 0; i < citiesCount; i++)
{
printf("CITY: %s\n", cities[i]);
}
printf("END\n");
return 0;
}
void populate(int* citiesCount, char cities[][chars])
{
char cntrl;
for(int i = 0; i < rows; i++)
{
printf("%d\n", *citiesCount);
scanf("%100[^\n]", &cities[*citiesCount++]); //read line of txt file and save it to array of strings
printf("%s\n", cities[i]);
cntrl = getchar(); //check, if I'm at end of file, if yes break loop
if(cntrl == EOF)
break;
}
}
在本项目中,禁止使用动态内存分配
如果我试图编译代码,会出现以下错误:
“'%[^'要求参数的类型为'char*',但参数2的类型为'char(*)[101]'”
我尝试了所有可能的方法来处理它,但没有找到任何有效的方法。如果您不太喜欢使用scanf,这一个应该会有帮助
void populate(int* citiesCount, char cities[][chars])
{
for(int i = 0; ( i < rows ) && fgets( cities[i], chars, stdin) ; i++)
{
// remove there if not required.
printf("%d\n", (*citiesCount)++ );
printf("%s\n", cities[i]);
}
}
void填充(int*citiesCount,char cities[][chars])
{
对于(int i=0;(i
scanf(“%100[^\n]”,&citiesCount[*citiesCount++]);
-->scanf(“%100[^\n]”),cities[(*citiesCount)+++]);
我删除了符号,现在代码编译,但在第一行崩溃。@xing*citiesCount++
在将*citiesCount替换为(*citiesCount之后应该是(*citiesCount++
)++代码工作正常。谢谢。cntrl=getchar();返回int
void populate(int* citiesCount, char cities[][chars])
{
for(int i = 0; ( i < rows ) && fgets( cities[i], chars, stdin) ; i++)
{
// remove there if not required.
printf("%d\n", (*citiesCount)++ );
printf("%s\n", cities[i]);
}
}