gpt4 book ai didi

c - 将字符串和字符存储在二维数组中 (C)

转载 作者:太空宇宙 更新时间:2023-11-04 05:56:36 27 4
gpt4 key购买 nike

我正在尝试编写一个程序来模拟 DFA。我需要做的是从用户那里获取一些输入并将其保存在两个独立的数组中(将其用作行和列),然后创建第三个数组(2d)作为第一个数组的值表两个数组。

例如:array2 = {a, b} array1 ={q1,q2,q3}array[array1][array2] = (下表)

  a   b 

========

q1| v1 v2

q2| v3 v4

问题3| v5 v6

问题:

1) 我无法将字符串 q1,q2,q3... 保存到数组中

2) 第二个数组值以某种方式覆盖了第一个数组值,(可能是因为我使用的是与它们的计数器相同的变量?如果我更改第二个循环的计数器变量,则会出现段错误

如果有人能指出我哪里做错了就太好了。

编辑:由于 coolguy 和 jayesh 的回答,分段问题已解决。我还有一个问题,array1 不返回字符串,它只返回字符,如果我输入 q1,它只返回 q。

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

// Function declaration
void clearNewLines(void);


int main(int argc, char *argv[]){

// Number of states and number of alphabets of DFA
int numStates;
int numAlphabets;

// Array for name of alphabets, and name of states
char nameOfAlphabets[numAlphabets];
char nameOfStates[numStates];

// Saving transition table
char *transitionTable[numStates][numAlphabets];

// Read numStates
printf("Enter the number of STATES:");
scanf("%d",&numStates);

// Flush STDIN
clearNewLines();

// Read the nameOfStates
int i;
for(i=0;i<numStates;i++){
printf("Name of STATES:");
fgets(&nameOfStates[i], 100,stdin);
}// End of for-loop to read nameOfStates

// Read numAlphabets
printf("Enter the number of ALPHABETS: ");
scanf("%d", &numAlphabets);

// Flush STDIN
clearNewLines();

// Read name of alphabets

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

printf("Name of ALPHABETS:");
nameOfAlphabets[i] = getchar();

// Flush STDIN
clearNewLines();

}// End for-loop to read alphabets

// Get the transitionTable[states][alphabets]
int row;
for(row=0;row<numStates;row++){

int col;
for(col=0;col<numAlphabets;col++){

printf("Enter Transition From %c to %c: ",nameOfStates[row],nameOfAlphabets[col]);
printf("\n");
}

}

return 0;
}// End of main function

/*
*
* clearNewLines - clear any newline character present at the STDIN
*/
void clearNewLines(void)
{
int c;
do
{
c = getchar();
} while (c != '\n' && c != EOF);
}

最佳答案

int numStates;
int numAlphabets;

char nameOfAlphabets[numAlphabets];
char nameOfStates[numStates];
char *transitionTable[numStates][numAlphabets];

此处 numAlphabetsnumStates 未初始化。

scanf 之后移动定义。

喜欢

    int numStates;
int numAlphabets;

// Read numStates
printf("Enter the number of STATES:");
scanf("%d",&numStates);

// Read numAlphabets
printf("Enter the number of ALPHABETS: ");
scanf("%d", &numAlphabets);

char nameOfAlphabets[numAlphabets];
char nameOfStates[numStates];
char *transitionTable[numStates][numAlphabets];

关于c - 将字符串和字符存储在二维数组中 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26403161/

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