[英]passing of strings in C function
我在C编程中存在以下问题。
我有一个存储为word [10] [50]的字符串数组。 我想从数组中提取每个字符串,然后将其传递给另一个函数。 我尝试了以下内容:
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
int Check_Anagram(char*,char*);
void main()
{
char words[10][20];
int i;
int flag;
for(i=0;i<3;i++)
{
scanf("%s\n",words[i][20]);
}
for(i=1;i<10;i++)
{
flag = Check_Anagram(words[i][20],words[i-1][20]);
}
getch();
}
int Check_Anagram(char *a,char *b)
{
printf("%s %s\n",a,b);
return 1;
}
这将在编译期间创建异常。 现在,我认为当我使用“ printf”语句时,该命名法可以正常工作ii words [i]从二维单词数组中打印字符串“ i”。 当我尝试使用检查功能执行相同的操作时,就会发生错误。
soemone可以指出我该如何做吗?
PS请同样忽略程序效率方面的任何错误。 我需要您的帮助,这只是学习将字符串传递给函数的测试程序,谢谢
您正在传递words[i][20]
。 您需要在两个循环中都传递words[i]
。 尝试这个:
for(i = 1; i < 3; i++) /* i < 3 */
{
flag = Check_Anagram(words[i], words[i-1]);
}
另一个问题是您正在读取3
字符串并尝试打印10
3
字符串。 因此,当您传递words[3]
它包含垃圾: printf
尝试打印不需要以0结尾的垃圾。
在第一个for循环中,当i为0时,您指向的是单词[-1],这是您的例外。
标志= Check_Anagram(words [i] [20],words [i-1] [20]);
您正在将每个单词的21个字母传递给Check_Anagram。 相反,您应该自己传递以下单词:
flag = Check_Anagram(words[i],words[i-1]);
您在使用scanf
遇到类似的问题。 要从控制台读取一行到每个单词,您将使用:
for(i=0;i<10;i++)
{
scanf("%s\n",words[i]);
}
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
int Check_Anagram(char [],char []);
void main()
{
char words[10][20];
int i;
int flag;
for(i=0;i<3;i++)
{
scanf("%s\n",words[i]);
}
for(i=1;i<10;i++)
{
flag = Check_Anagram(words[i],words[i-1]);
}
getch();
}
int Check_Anagram(char a[],char b[])
{
printf("%s %s\n",a,b);
return 1;
}
在所有用户的帮助下,我终于纠正了它。 我已将更正后的代码发布给那些努力将从字符串数组中提取的字符串传递给另一个函数的人。 希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.