0

您好,我正在尝试在结构中使用 strlen 函数,但我失败了。我的代码是这样的:在 scanf 之后,我只得到表的第一个字符,而在最后一个 print f 中,程序崩溃了。任何建议或想法我做错了什么?主要是用户将用字母数字和 strlen 填充表格,我想提取字母数字的长度。

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

main(void)
{
int M,N;

struct word_pair /*structure  */
    {
    char word[M]; // the alphanumeric
    int lenght; //the lenght of alphanumeric
    };
struct word_pair word_table[N]; // the table of alphanumeric and lenght

printf("Enter a frase:");
 scanf("%c",&word_table[N].word[M]);
 printf("\n Your frase is %c ",word_table[N].word[M]);
printf("\n %u ",(unsigned)strlen(word_table[N].word[M]));
}
4

1 回答 1

0

你声明了一个 of 的数组word_pair,但你只struct在数组中使用了一个,并且你将它存储在一个无效的位置(N)中。考虑到当您声明一个长度数组时,n例如数组int a[n];内的有效位置是 from 0to n - 1

您必须首先将变量初始化为您需要的任何值NM之后,尝试(假设N > 0M > 0):

scanf("%c",&word_table[0].word[0]);
printf("\n Your frase is %c ",word_table[0].word[0]);
printf("\n %u ",(unsigned)strlen(word_table[0].word[0]));
于 2013-03-04T20:52:43.087 回答