- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
int fp = open(file_name, O_CREAT | O_RDONLY, 0644);
if(fp < 0) {
perror("erro ao abrir o ficheiro");
_exit(-1);
}
char* notebook = myreadln(fp);
printf("%s\n====\n\n",notebook);
char* token = strtok(notebook, "\n");
while(token != NULL){
printf("%s\n",token );
new_line(d,token);
token = strtok(NULL, "\n");
}
{...}
在这段代码中,我使用一个文件加载 char* 笔记本
,因此,我想使用“\n”将该 char* 分成几行,但输出是这样的:
Isto vai dar sort
$ ls
Jk isto e que vai
$| sort
Isto faz mais
$| head -1
====
Isto vai dar sort
Isto vai dar sort
vai dar sort
vai dar sort
dar sort
dar sort
sort
sort
有人可以解释为什么 token 总是会丢失单词而不是转到下一行吗?
我的函数new_line:数据 d 是指向我的结构数据的指针
void new_line(Data d, char* s){
char* aux = mystrdup(s);
printf("\t%s\n",aux);
int n = conta_palavras(aux); // number of words
char** args = malloc((n+1)*sizeof(char*)); // create space for n words
args[n] = NULL;
char** words = escreve_palavras(aux, args);
add(d,words);
}
mystrdup:
char * mystrdup (const char *s) {
if(s == NULL) return NULL;
char *d = malloc (strlen (s) + 1);
if (d == NULL) return NULL;
strcpy (d,s);
return d;
}
最佳答案
strtok
循环本身编写正确,如果没有函数 new_line()
,它会输出一行,因为它会破坏 \处的字符串。 n
.
所以函数 new_line()
一定会干扰它。让我猜猜怎么做。您希望将字符串分解为单词,这就是 new_line()
正在尝试做的事情。当我用下一个代码实现它时 - 嘿!我得到了你得到的输出。
#include <stdio.h>
#include <string.h>
void new_line(char *d, char *str)
{
char *tok = strtok(str, d);
}
int main() {
char notebook[] = "Isto vai dar sort";
char delim[] = " ";
char* token = strtok(notebook, "\n");
while(token != NULL){
printf("%s\n", token );
new_line(delim, token);
token = strtok(NULL, "\n");
}
}
程序输出:
Isto vai dar sortvai dar sortdar sortsort
Now strtok
is not "reentrant", meaning that if you are using it in one function it cannot be used safely in another function. So let's try to get the answer you wanted by breaking the string at the spaces (and any trailing newline) right away:
#include <stdio.h>
#include <string.h>
int main() {
char notebook[] = "Isto vai dar sort";
char* token = strtok(notebook, " \n"); // added the space
while(token != NULL){
printf("%s\n", token );
token = strtok(NULL, " \n"); // added the space
}
}
现在程序输出是:
Istovaidarsort
我想这就是你想要的。
如果您想在不同的函数中使用 strtok
,您应该使用 strtok_s
(MSVC) 或 strtok_r
(gcc)。
关于有人可以解释为什么 token 总是会丢失单词而不是到达下一行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50685657/
我正在尝试制作一个程序,显示飞机到达和起飞的时间表,然后要求用户在 C 中输入时间。然后程序将找到最接近输入时间的到达时间用户。问题是它没有按预期工作,并且给我一个错误的到达时间,甚至不接近输入的时间
我有一个不断填充新信息行的 Excel 表,其中一列与联系客户的日期(有时为空 - 无需输入日期)相关,如果在 10 内没有收到回复从那以后的几天,我们必须发送提醒,如果过了 17 天,我们必须取消订
实际到达很简单,标签进入接收器天线范围,但是偏离是造成问题的原因。 首先,我们了解一些有关设置的信息。 标签: 它们以433Mhz的速度工作,每1.5秒钟发送一次“心跳”,移动时进入传输突发模式,这种
我构建了这段代码来从 URL 获取 XML我使用了 AsyncTask,当到达 getInputStream() 点时,半身应用程序仍然崩溃 重点是我想从 url 获取 XML 作为字符串。 我尝试不
所以我有一个 TDBGrid,我的目的是搜索 DBGrid 的 Fieldname 并将其与我的编辑的 Text 属性进行比较,如果它们相等,则 我想将找到匹配项的整列写入列表框。 通过带有 fiel
我会写得非常简单,因为实际的修复并不比我不理解的实际设计重要。似乎一旦我的 @RequestBody 命中 @Controller,有关 subtype 的信息就会丢失。 假设我们有: class A
所以我正在做这个简单的动态编程问题,关于达到 n一次只能走 1 或 2 步。我知道答案基本上是一个斐波那契序列,答案是:达到n-2的步骤数+ 到达 n-1 的步数. T(n) = T(n-1) +
(function start (){ $('.bar').each(function(i){ var $bar = $(this); $(this).append('')
我有一个程序,我在启动它之前要求用户输入。 public static void main(String args[]) { String database = JOptionPane.sho
就是这样,我必须在提交按钮上有一张图片,但它根本没有出现。 我希望它看起来像这样: 现在看到我的是这样的,我不明白为什么它没有出现在页面上。 HTML CSS #sognu { bac
click here 点击后重定向至 xyz.com/#contact, 现在我想获得div #abc的顶部位置 //set the value as a variable, and remove t
here is a fiddle to know where I am starting from 我要解决的问题涉及对单个 html 文件的内容进行“分页”,以一种将它们一次锁定在一个部分中的方式。
是否可以在传递页面部分时运行 javascript 函数?我想要实现的是类似于 Twitter Bootstrap 的 scrollspy。 最佳答案 您可以使用 waypoints 插件: http
我有一个可以动态调整其大小的 iframe。我通过父页面上的发布消息和监听器解决了这个问题,因此每次 iframe 的内容发生变化时,iframe 的大小也会发生变化,并且永远不会有滚动条。 在 if
我试图让我的导航栏在到达我在网站下方设置的 anchor 时变得透明。 这是我的HTML Home About Logo W
我写了一个简单的程序来管理姓名列表(下面是程序的一部分)。我希望函数“choice()”结束并返回到 main()——从而结束程序——当用户对变量“option”的输入为 4 时。然而,choice(
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
代码片段在 while 循环后有一个 EOF,之后必须再次重新打开文件 - fopen 被重用。我的问题是是否有办法避免这种笨拙的 fopen 双重使用或以某种方式不使用 EOF? if (!(f=f
从这个页面: http://www.beta.inegi.org.mx/app/buscador/default.html?q=e15a61a 我正在尝试检索此网址: http://www.beta.
我使用维基百科的 API 来获取有关页面的信息。API 给我这样的 JSON: "query":{ "pages":{ "188791":{ "pageid":18879
我是一名优秀的程序员,十分优秀!