- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在转换(从 javascript)一个程序,该程序将采用可变长度的字符串(但始终低于 100 个字符)并返回单个变量中字符串中包含的数据。这是我的代码的第一部分,显然,我对 C 和一般编程很陌生。该代码适用于代码的第一部分,但是学习如何正确编码这将使我知道如何编码其余部分。
我需要:
输入示例:
'12345678901234567890123'
示例输出:
当我运行该程序时,它返回“String ID: H>a”,然后程序崩溃。任何帮助,将不胜感激。不,这不是家庭作业。
int main()
{
char mystring[100];
char *stringID;
int nep;
int *myindicator;
char *var1;
nep = 0;
printf("Please enter your CODE\n");
scanf("%s", &mystring);
stringID = (char *)malloc(4 * sizeof(char));
if(NULL != stringID)
{
strncpy(stringID, mystring, 4);
stringID[4] = '\0';
free(stringID);
nep = nep +4;
printf("stringID: %s\n",myindicator);
}
if(NULL != myindicator)
{
strncpy(myindicator, (mystring+nep, 1);
nep++;
myindicator = *myindicator - '0';
printf("Indicator : %d\n",myindicator);
}
var1 = (char *)malloc((nep + 6) * sizeof(char));
if(NULL != var1)
{
strncpy(var1, mystring+nep, (myindicator+nep+6));
var1[myindicator+nep+6] = '\0';
free(var1);
printf("Var 1: %s", var1);
nep = nep +myindicator+6;
}
getchar();
return 0;
}
最佳答案
我修复了一些东西,在评论中找到它。但是你需要查看C语言手册...!
int main()
{
char mystring[100];
char *stringID;
int nep;
// Changed to integer, not pointer to int.
int myindicator;
char *var1;
nep = 0;
printf("Please enter your CODE\n");
/*
This scanf is a bad idea for the same reason for which, below, we take
care to allocate memory enough for whatever we have to do.
Should someone input 250 characters in a buffer of size 100, those 150
extra characters would wreak havoc and possibly endanger the system.
*/
// scanf("%s", &mystring);
fgets(mystring, sizeof(mystring)-1, stdin);
// fgets will read at most "sizeof(mystring)-1", that is, 99 bytes,
// from "stdin" (STanDard INput), the same as scanf. But it will halt
// when reaching the limit given. It's up to us to give a "real" limit
// (nothing stops you from saying 15000 -- even if the true value is 100).
// C strings are made of characters, terminated by a zero byte.
// So you need 5 here, to store 4 characters
stringID = (char *)malloc(5 * sizeof(char));
if (NULL == stringID)
{
// Serious out of memory error: no sense going on.
// fprintf(stderr, "Out of memory\n");
abort();
}
strncpy(stringID, mystring, 4);
stringID[4] = '\0';
printf("ID: %s\n", stringID);
free(stringID);
nep = nep + 4;
printf("NEP: %d\n", nep);
// Now we want to decode the fifth digit.
// I use '0' as character. So if the fifth digit is '0', '0'-'0' will give 0
// and if it is '9', '9'-'0' will give 9 (the number).
// The trick does not work with more than one digit, of course.
myindicator = mystring[nep] - '0';
// Had I wanted to read 3 digits, I would have had to copy them into a
// temporary buffer, add a zero in the fourth position, then run atol()
// on the resulting buffer: atol("12345\0" /* A STRING */) = 12345 /* A NUMBER */;
printf("VLI : %d\n", myindicator);
// Copy "myindicator" bytes, so alloc myindicator+1 chars
var1 = (char *)malloc((myindicator + 1) * sizeof(char));
// Check that var1 is not null and abort if it is
if (NULL == var1)
abort();
strncpy(var1, mystring + 6, myindicator);
var1[myindicator+1] = '\0';
// Moved this printf before the free. See why below.
printf("Prefix : %s\n", var1);
// NEVER use a variable after you freed it!!!
// it might APPEAR to work, but will stab you in the back the first chance it gets.
// Good if paranoid habit: null a var as soon as you've freed it.
free(var1); var1 = NULL;
getchar();
return 0;
}
关于C语言: Newb translating code from javascript to C,代码包含malloc、strncpy、指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11421444/
我听说 Translate API 需要付费,但究竟是什么阻止了我们使用免费的 Google 翻译服务 here免费 ?否则,免费服务的限制是什么? 最佳答案 根据下面的链接,没有什么可以阻止您。 h
我正在修复我的 Karma 配置以运行 Angular2 - rc 1 版本的测试。我可以运行测试,但如果我在 html 中有一个翻译管道,它们就会失败。(我可以让它工作的配置是从 [这里][1] 得
我正在使用以下代码: GttService myService = new GttService("ex1cor.ex1Ap.1"); myService.setUserCredentials("ex
是否可以在 Silverstripe 3 中翻译数据对象? 我使用这个模块: http://www.silverstripe.org/translatable-module/ 在我的配置中是否定义了以
我有以下三个问题 我想使用 Google 的 API 来翻译文本。我知道谷歌对翻译和检测单独收费。谷歌翻译也支持翻译两种翻译方式 i) 通过指定源和目标,如 https://www.googleapi
我一直在使用 Microsoft Translator 的 HTTP API 来翻译我网站上的文本。 作为the documentation describes , 有一个选项可以指定翻译的类别。找不
当您在 localhost 上开发应用程序时,是否有机会在不获取 key 的情况下使用 Use Google Translation API? 我希望这样的事情能够奏效' https://www.go
我正在尝试翻译实体的某些字段,但在尝试创建对象时出现以下错误... id; } /** * Set name * * @param string $nam
当用户访问我们的网站时,我们使用 Google Translate API 将我们的内容翻译成用户的语言。 (当然,我们遵循署名和链接要求,以便用户知道内容是 Google 的翻译。) 为了优化,我们
我非常频繁地使用谷歌翻译 API V2,在大约 2000 个请求之后,我开始在返回的 JSON 中得到这个: Array ( [error] => Array (
我刚开始使用 Google 翻译 API,在测试过程中我们注意到,对于某些翻译(我尚未找到模式),我们会在响应中收到\u200b 字符。这会导致很多问题,最重要的是,它似乎没有任何目的或没有任何意义。
从laravel 5.8升级到laravel 6.0后,发现这个错误。 Method Illuminate\Translation\Translator::getFromJson does not e
这是一个基本的移动滑入/滑出菜单。 我发现很难调试,但基本上我的问题是,当我按下菜单按钮时,菜单会顺利打开,再次按下它会顺利关闭。然而,当我再次按下它(第三次)时,它不顺利打开,它只是出现。但是它仍然
我的 Android Studio 的翻译编辑器无法正常工作。如果我打开翻译编辑器确实列出了字符串的正确键,但是找不到默认值和翻译。所有键都有一个默认值,其中大多数也有一个翻译。 我重新启动了 And
我正在尝试从 python 控制台而不是通过 bazel -build 运行 Tensorflow 的 translate.py,但我在这两行出现错误: from tensorflow.models.
本文整理了Java中org.apache.tika.language.translate.YandexTranslator.translate()方法的一些代码示例,展示了YandexTranslat
我需要来自 Google Transle API 的同义词信息。有没有可能得到它? 最佳答案 抱歉不行。看到这个 post .看起来他们opened a PIT添加功能。你应该给它加星号来增加重量!
我在我的一个项目中使用 Google Cloud Translation API。我想指定翻译的性别。我无法在 Google Cloud Translation 中找到相关信息。我也在互联网上搜索了很
我已经在我的 Angular-Cli 应用程序中实现了 ngx-translate 并且在我执行以下操作时工作正常: {{ 'some.value' | translate }} 但是我该如何翻译 H
我决定在我的项目中使用 Google Cloud Translation API。在我尝试运行他们的脚本之前,一切似乎都很好。它总是说我需要“使用 require([])”。 在我在 require
我是一名优秀的程序员,十分优秀!