c - 在 C 中使用 strtok 时访问冲突(使用 Visual Studio 2019)
问题描述
嗨 StackOverflow 社区,我在非常需要的时候来找你。
我的问题涉及使用“Visual Studio”IDE(2019)在 C 中使用 strtok()
这是我的代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char num1 = "", num2 = "", num3 = "", num4 = "", num5 = "", num6 = "", num7 ="", num8 = "", num9 = "", num10 = "", num11 = "", num12 = "", num13= "", num14 = "", num15 = "", num16 = "";
int int1, int2, int3, int4, int5, int6, int7, int8, int9, int10, int11, int12, int13, int14, int15, int16;
FILE* file = NULL;
fopen_s(&file, "sauv.txt", "r");
char chaine[101] = "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16";
char* point = NULL;
char* buffer = NULL;
char rend[100] = { 0 };
num1 = strtok(chaine, " ");
printf("num = %s", num1);
num2 = strtok(NULL, " ");
printf("num = %s", num2);
return 0;
}
这只是一个简单的测试程序来隔离我在一个更大的程序中遇到的这个问题。
这是我得到的错误:
(在 TEST.exe 中的 0x7A3B1F4C (ucrtbased.dll) 处引发异常:0xC0000005:访问冲突读取位置 0xFFFFFF8C。)
据我所见,它与我的程序相关联,该程序试图访问无法访问或无法访问的目标(如数组的地址)。显然,这是由于未启动数组/指针或尝试访问定义为仅 [i] 长的数组的 [i+1] 值引起的。我看不出我的代码是如何发生的。
我还看到这是因为 strtok() 返回一个不可更改的值或类似的东西。
我正在尝试在“1”“2”“3”“4”中剪切字符串“1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16”......这里我只完成了代码得到“1”和“2”。
如果有人可以向我解释问题的根源是什么,那就太好了!
(我知道这可能来自我创建字符串的方式或类似的东西,但我已经尝试自己解决这个问题好几天了,它仍然让我感到困惑)
感谢您的回答!
解决方案
推荐阅读
- cmd - 无法打开虚拟机的会话 (0x80004005)。我在 CMD 中写错了一个代码,现在我在 VirtualBox 中收到此错误消息
- java - 在 docker 中使用 Selenium-hub 下载文件,其中内容类型标头在加载时更改(Java)
- gwt - 如何将 ValueChangeHandler 添加到自定义 DateBox?
- pine-script - 在 RSI 水平 > 70 时计算 RSI“峰值”的数量
- jquery - AJAX 目标文件不会显示上传处理的数据
- r - 如何使用 R 求解标准正态分布中的变量?
- python - 从同一个图中制作多个图形
- python - 如何验证 __init__ 中的类参数?
- javascript - 为什么样式没有被 ClassList.Add() 应用?
- php - Woocommerce:迭代订单和订购产品的最佳方式