dPicoc for Nspire Alpha1不稳定版本
移植成功,但是ndless的标准库有很多问题,很多函数能否正常使用未知具体的支持函数列表放在二楼
使用方法:在根目录下建一个叫“dpicoc”的文件夹,把要执行的源文件都放到里面
程序初始化为灰度模式,支持ndless的机器理论上都可以使用。程序已在clickpad上测试通过
想在机器上编辑文件的可以考虑使用nTxt
例1:hello world#include <stdio.h>
int main()
{
puts("Hello world!\n");
return 0;
}例2:求和(标准库的atol无法使用,只能自己实现)#include <stdio.h>
#include <ctype.h>
long atol(char *nptr)
{
int c; /* current char */
long total; /* current total */
int sign; /* if '-', then negative, otherwise positive */
/* skip whitespace */
while ( isspace((int)(unsigned char)*nptr) )
++nptr;
c = (int)(unsigned char)*nptr++;
sign = c; /* save sign indication */
if (c == '-' || c == '+')
c = (int)(unsigned char)*nptr++; /* skip sign */
total = 0;
while (isdigit(c)) {
total = 10 * total + (c - '0'); /* accumulate digit */
c = (int)(unsigned char)*nptr++; /* get next char */
}
if (sign == '-')
return -total;
else
return total; /* return result, negated if necessary */
}
int main()
{
char buf;
int n;
puts("input a number:");
gets(buf);
n = atol(buf);
sprintf(buf,"1+2+3+...+%d = %d",n,n*(n+1)/2);
puts(buf);
return 0;
}
例3:bmp文件读取(文件io正常~)#include <stdio.h>
int main()
{
int width,s,height,offset,x,y;
FILE * fp = fopen("/documents/dpicoc/C_C.bmp.tns","rb");
if (fp==NULL)
{
puts("cannot open file");
return -1;
}
fseek(fp,0x1C,SEEK_SET);
fread(&s,sizeof(short),1,fp);
if (s != 24)
{
puts("not a 24-bit bitmap");
fclose(fp);
return -1;
}
fseek(fp,0x12,SEEK_SET);
fread(&width ,sizeof(int),1,fp);
fread(&height,sizeof(int),1,fp);
fseek(fp,0xA,SEEK_SET);
fread(&offset,sizeof(int),1,fp);
fseek(fp,offset,SEEK_SET);
char buf;
unsigned char r,g,b,c;
int i;
sprintf(buf,"width = %d,height = %d\noffset = %d\n",width,height,offset);
puts(buf);
puts("press enter..");
gets(buf);
clrscr();
for (y = 0;y < height;++y)
{
for (x = 0;x < width;++x)
{
fread(&b,1,1,fp);fread(&g,1,1,fp);fread(&r,1,1,fp);c = (r+g+b)/3>>4;
setpixel(x,height-y,c);
}
}
fclose(fp);
gets(buf);
return 0;
}
附件:程序、一些例子:
本帖最后由 diameter 于 2013-6-5 18:30 编辑
ndless标准库很多有问题,请大家及时报错以便修正或者重写
标准库支持:stdio.h
常量:
EOF
SEEK_SET
SEEK_CUR
SEEK_END
FILENAME_MAX
函数:
int sprintf(char *, char *,...);
int puts(char *);
char * gets(char *);
void cls();/这是清除控制台内容的,与下面的clrscr不同
FILE *fopen(char *, char *);
FILE *freopen(char *, char *, FILE *);
int fclose(FILE *);
int fread(void *, int, int, FILE *);
int fwrite(void *, int, int, FILE *);
int fgetc(FILE *);
int getc(FILE *);
char *fgets(char *, int, FILE *);
int fputc(int, FILE *);
int fputs(char *, FILE *);
int feof(FILE *);
int ftell(FILE *);
int fseek(FILE *, int, int);
void setpixel(int,int,unsigned int);
void clrscr();重要::puts和gets基于一个console,不是stdout和stdinstdlib
函数:
float atof(char *);
int atoi(char *);
int atol(char *);
int strtol(char *,char **,int);
void *malloc(int);
void *calloc(int,int);
void *realloc(void *,int);
void free(void *);
int rand();
void srand(int);
void abort();
void exit(int);
char *getenv(char *);
int abs(int);
int labs(int);string
函数:
void *memcpy(void *,void *,int);
void *memmove(void *,void *,int);
void *memchr(char *,int,int);
int memcmp(void *,void *,int);
void *memset(void *,int,int);
char *strcat(char *,char *);
char *strncat(char *,char *,int);
char *strchr(char *,int);
char *strrchr(char *,int);
int strcmp(char *,char *);
int strncmp(char *,char *,int);
char *strcpy(char *,char *);
char *strncpy(char *,char *,int);
int strlen(char *);
char *strstr(char *,char *);常量NULL在以上每个文件都有定义errno
常量:
errnoctype
函数:
int isalnum(int);
int isalpha(int);
int isblank(int);
int iscntrl(int);
int isdigit(int);
int isgraph(int);
int islower(int);
int isprint(int);
int ispunct(int);
int isspace(int);
int isupper(int);
int isxdigit(int);
int tolower(int);
int toupper(int); 板凳 支持一下,有时间就测试(最早今晚最晚高考以后…)
另外请问lz能否提供一个ntxt,现在上omnimaga巨慢… 本帖最后由 haoxuan0532 于 2013-6-6 07:00 编辑
BUG提交:
有时退出程序会出现显示紊乱现象D:\360data\重要数据\桌面\DSCF5562.JPG
图片太大了= =。。。 小饕好敬业啊
要高考了好好努力呦!! 不错,另外建议提供彩色模式和灰度模式的切换(可考虑重启生效),做个好看点的GUI(以后的事了。 还有,我记得c的输出函数是printf啊 又要和谐系统,我的3.2最新版的系统不知道和谐的了吗? chuxianbing 发表于 2013-6-6 08:37
又要和谐系统,我的3.2最新版的系统不知道和谐的了吗?
能降级,前几天我亲测成功 DAS 发表于 2013-6-5 23:09 static/image/common/back.gif
还有,我记得c的输出函数是printf啊
同问。。弄的我疑惑了半天 这是啥语言? 不知道 cx 能不能用 晚上回去试试 还有,if语句似乎有问题。
if(a == b)
{
puts("unlocked");
}
无论条件是否成立,均按成立处理。
也可能是gets的毛病。
另外拜托发个函数列表过来,我不会ndless。
[email protected] 本帖最后由 diameter 于 2013-6-7 13:01 编辑
DAS 发表于 2013-6-6 23:27 static/image/common/back.gif
还有,if语句似乎有问题。
if(a == b)
{
请把完整代码发上。下面的程序能正确执行,if应该没有问题#include <stdio.h>
int main()
{
int a,b;
a = 1;
b = 2;
if (a==b)
puts("a==b");
else
puts("a!=b");
return 0;
}ps:函数列表不就在二楼么... 好吧,是代码有问题,不过gets那个没看懂啊.................还有,缺少了一个os.h,压缩包里没有。 同样求os.h支持~ DAS 发表于 2013-6-5 23:09 static/image/common/back.gif
还有,我记得c的输出函数是printf啊
puts是输出字符串
页:
[1]