首页 > 解决方案 > c中的char数组不适用于Visual Studio 2015

问题描述

  1. 这是拿起字符串的唯一方法吗?你不能将一个字符一个字符地放入一个数组中吗?
  2. 访问内存时出错。附上代码和错误。
void main()
{
    int counA = 0, countB = 0, Na, Nc, i, index;
    printf("enter Na and Nc\n");
    scanf_s("%d%d", &Na, &Nc);
    char DNA[1000], SEQ[1000], str[1000];

    printf("enter mulekula\n");
    scanf_s("%s", str);
}

输入:

2
3
AAA

我得到的消息:

exception thrown...

标签: c

解决方案


fgets 可以提供帮助,请参阅此代码

#include<stdio.h>
#include<string.h>
int main()
{
chat str[1000];

fegts(str,sizeof(str),stdin);

str[strlen(str)-1]='\0';
return 0;

}

此代码将从控制台获取输入,直到您按 enter ,但请注意 fgets 在输入中包含换行符('\n'),因此我们需要将其删除并以空字符('\0')结束字符串。

这就是这行代码的原因,str[strlen(str)-1]='\0';所以 strlen(str) 将返回字符串的长度,包括换行符。

例如 :

如果输入是"fo",那么它存储在 str 中,如下所示:

str[0] = 'f' , str[1]='o' , str[2]='\n' 和 str[3]='\0'。所以strlen(str)-1将返回 2 ,所以 str[2] 将被分配给空字符 '\0'

最后字符串如下:

str[0] = 'f' ,str[1]='o' 和 str[2]='\0'。


推荐阅读