c - c中的char数组不适用于Visual Studio 2015
问题描述
- 这是拿起字符串的唯一方法吗?你不能将一个字符一个字符地放入一个数组中吗?
- 访问内存时出错。附上代码和错误。
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...
解决方案
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'。
推荐阅读
- firebase - 使用 Firebase 云功能上传图片
- r - 使用客户端处理(服务器 = F)在 Shiny 应用程序中进行 DT 编辑会引发 JSON 错误
- xml - 如何使用 PowerShell 从 xml 文件的子节点获取信息
- asp.net - 哪种引用库的方式更快?
- javascript - 如何访问这个函数参数和 ES6 模块
- java - 如何解决从角度 5 到 java 休息服务调用的 POST 请求错误问题?
- javascript - Javascript比较对象
- javascript - Acrobat GST 计算
- android - 如何将 FAB 置于布局顶部
- powershell - 无法使用 Invoke-Webrequest 登录网站