【发布时间】:2015-03-07 02:51:51
【问题描述】:
我有一个文本文件,内容如下:
5f6
2f6
4f6
我想从该文本文件中获取数字(作为字符,然后使用 atol() 将它们转换为整数
我有代码:
#include <ncurses.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int main(int argc, char * argv[])
{
initscr();
cbreak();
noecho();
char buf[100];
char * ptr;
char * ptr2;
char * ptr3;
char * ptr4;
int a;
int b;
int c;
int d;
FILE* file;
if (strcmp(argv[1],"test.txt") == 0)
{
file = fopen("test.txt","r");
while (fgets(buf,100,file) )
ptr = strtok(str,"f");
ptr2 = strtok(NULL," ");
ptr3 = strtok(NULL,"f");
ptr4 = strtok(NULL," ");
a = atol(ptr);
b = atol(ptr2);
c = atol(ptr3);
d = atol(ptr4);
}
refresh();
getchar();
endwin();
return (0);
}
然而,程序段错误但编译。我将如何更有效地执行此操作(通过不分段错误的方法)?
【问题讨论】:
-
那是准确的代码吗?请复制并粘贴。
-
正如你所说,它编译后编译的代码/函数的完整版本
-
如果您不想发布完整的程序,请创建Minimal, Complete, and Verifiable Example 并展示给我们。
-
另外请注意,如果输入中的所有行都遵循示例所示的确切格式,那么您不需要
strtok或strtol,只需读取一行,然后获取第一个和第三个字符来获取数字。不要把事情复杂化! -
您认为
while循环中会发生什么?它只在循环中执行对strtok的first 调用。哦,那个代码不会编译!请复制粘贴代码,不要重写。
标签: c file pointers segmentation-fault