如何将数组中的字符串分配给 C 中的变量(来自函数)?

用户7977797

所以,我想要做的就是将一个字符串从函数中的数组返回到 main() 函数中的一个变量。下面是我的功能。它基本上在一些文件中搜索一个词,并返回包含“START_ROOM”的文件的字符串名称:

char startPrompt()
{
    //array of files
    char* arrayFiles[7]={"Room1.txt", "Room2.txt", "Room3.txt", "Room4.txt", "Room5.txt", "Room6.txt", "Room7.txt"};
    //used to store file that has START_FILE in it
    char startFile;
    int i;
            for(i=0;i<7;i++)
            {
                    //pointer to files
                    FILE *fPointer;
                    //prints files to output
                    char loadScreenOutput[800];
                    char* response[256];


                    fPointer=fopen(arrayFiles[i], "r");
                    //checks if the file doesn't exist
                    if(fPointer== NULL)
                    {
                            printf("Unable to open the file!\n");
                    }
                    //if file exists, do this.
                    else
                    {
                            while(!feof(fPointer))
                            {

                                    fgets(loadScreenOutput, 800, fPointer);
                                    if(strstr(loadScreenOutput, "START_ROOM"))
                                    {
                                            return *arrayFiles[i];
                                    }
                            }

                            fclose(fPointer);
                    }
            }

主要功能在这里:

int main()
{
    char fileName;
    //start the game with the start file
    fileName=startPrompt();
    printf("%s", fileName)



    return 0;
}

然而,以上会导致分段错误。

如果我将 printf 更改为 printf("%c", fileName),我将得到文件的第一个字母,即“R”。

那么,我怎样才能简单地让它返回“Room1.txt”并将其存储在文件名中?我愿意更改 fileName 的变量类型,因为我猜这可能是问题所在。或者更改函数的返回类型,因为我猜这就是问题所在。

Overwise,我知道这段代码有效,因为如果我在函数内部使用 printf(),它将打印“Room7.txt”。

斯蒂芬·莱克纳

代码有点奇怪,但主要问题是您希望单个字符(即char)保存“字符串”,即字符序列。C 中的字符串是由特殊值终止的字符序列0它们通常与指向字符串文字的指针一起使用,写为char* someStringValue = "ABC"

char* str = "ABC";  // str will point to a sequence of characters {'A','B','C',0 }
char c = 'X'; // c will hold a single character 'X';
printf("%s",str); // will print ABC
printf("%s",c); // will probably segfault because c is not a pointer to a sequence of characters, i.e. is NOT A POINTER
printf("%c",c); // prints X
c = *str; // assignes the first character of the sequence to which str points
printf("%c",c); // prints A

要更正您的程序,请编写:

char* startPrompt()  // char* instead of char; char would be a single character
{
    // static; otherwise the variable and its values go out of scope and become invalid once startPrompt has finished
    static char* arrayFiles[7]={"Room1.txt", "Room2.txt", "Room3.txt", "Room4.txt", "Room5.txt", "Room6.txt", "Room7.txt"};
...
    return arrayFiles[i];  // not *arrayFiles[i], which would be a single character

...

int main() {
    char* fileName;  // char*, not char
    fileName=startPrompt();
    printf("%s", fileName)
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用C ++中的SimpleJSON库将JSON数组分配给字符串

来自分类Dev

将char数组中的指针分配给字符串C中的每个单词

来自分类Dev

将内存分配给c中的字符串数组

来自分类Dev

C++ 无法将字符数组变量分配给字符串变量

来自分类Dev

返回字符串数组并将其分配给C中的变量

来自分类Dev

如何将字符串中的值分配给二维数组?

来自分类Dev

如何将字符串中的值分配给2d数组?

来自分类Dev

将字符串分配给c中的结构变量

来自分类Dev

如何将函数输出分配给数组类型?在C中?

来自分类Dev

如何从数组中查找字符串并将其分配给c#asp.net中的字符串

来自分类Dev

将字符串值分配给目标c中的类

来自分类Dev

如何将分配给结构数组的结构包含在C中的结构中?

来自分类Dev

如何将字符串中的字符分配给对象中的值?

来自分类Dev

如何在单击Selenium按钮后将复制到剪贴板的字符串分配给C#中的变量?

来自分类Dev

如何将宏中的字符串随机分配给观测值

来自分类Dev

如何将宏中的字符串随机分配给观察值

来自分类Dev

如何使用C语言将字符串的一部分分配给变量

来自分类Dev

C ++将char **分配给字符串数组

来自分类Dev

将字符串分配给R中的变量

来自分类Dev

将字符串分配给python中的变量

来自分类Dev

如何将文件的内容分配给进行中的openg 4gl字符串变量?

来自分类Dev

如何将字符串数组中的字符串存储到C中的变量中

来自分类Dev

无法将字符串分配给我的Swift函数中的数组元素

来自分类Dev

C-如何将内存分配给可变长度的字符串输入?

来自分类Dev

分配给C中的字符串的索引解引用指针时出现段错误

来自分类Dev

如何将JSON值分配给字符串变量

来自分类Dev

如何将变量分配给具有特定索引的拆分字符串?

来自分类Dev

如何将字符串分配给PHP变量以用于电子邮件模板?

来自分类Dev

如何将字符串分配给 int 变量?

Related 相关文章

  1. 1

    如何使用C ++中的SimpleJSON库将JSON数组分配给字符串

  2. 2

    将char数组中的指针分配给字符串C中的每个单词

  3. 3

    将内存分配给c中的字符串数组

  4. 4

    C++ 无法将字符数组变量分配给字符串变量

  5. 5

    返回字符串数组并将其分配给C中的变量

  6. 6

    如何将字符串中的值分配给二维数组?

  7. 7

    如何将字符串中的值分配给2d数组?

  8. 8

    将字符串分配给c中的结构变量

  9. 9

    如何将函数输出分配给数组类型?在C中?

  10. 10

    如何从数组中查找字符串并将其分配给c#asp.net中的字符串

  11. 11

    将字符串值分配给目标c中的类

  12. 12

    如何将分配给结构数组的结构包含在C中的结构中?

  13. 13

    如何将字符串中的字符分配给对象中的值?

  14. 14

    如何在单击Selenium按钮后将复制到剪贴板的字符串分配给C#中的变量?

  15. 15

    如何将宏中的字符串随机分配给观测值

  16. 16

    如何将宏中的字符串随机分配给观察值

  17. 17

    如何使用C语言将字符串的一部分分配给变量

  18. 18

    C ++将char **分配给字符串数组

  19. 19

    将字符串分配给R中的变量

  20. 20

    将字符串分配给python中的变量

  21. 21

    如何将文件的内容分配给进行中的openg 4gl字符串变量?

  22. 22

    如何将字符串数组中的字符串存储到C中的变量中

  23. 23

    无法将字符串分配给我的Swift函数中的数组元素

  24. 24

    C-如何将内存分配给可变长度的字符串输入?

  25. 25

    分配给C中的字符串的索引解引用指针时出现段错误

  26. 26

    如何将JSON值分配给字符串变量

  27. 27

    如何将变量分配给具有特定索引的拆分字符串?

  28. 28

    如何将字符串分配给PHP变量以用于电子邮件模板?

  29. 29

    如何将字符串分配给 int 变量?

热门标签

归档