出于某种原因,我在第一次使用strtok()时得到一个异常我想要完成的是一个函数,它只是检查子串在字符串中是否重复.但到目前为止我还没有开始工作
int CheckDoubleInput(char* input){
char* word = NULL;
char cutBy[] = ",_";
word = strtok(input, cutBy); <--- **error line**
/* walk through other tokens */
while (word != NULL)
{
printf(" %s\n", word);
word = strtok(NULL, cutBy);
}
return 1;
}
Run Code Online (Sandbox Code Playgroud)
和主要调用功能:
CheckDoubleInput("asdlakm,_asdasd,_sdasd,asdas_sas");
Run Code Online (Sandbox Code Playgroud)

我有一个简单的函数,它接受一个字符串并返回一个字符串,在C中它看起来像;
char* get_string(char c) {
switch(c) {
case 'A': return "some string";
Case 'B': return "some other string";
...
Run Code Online (Sandbox Code Playgroud)
并且它工作正常,但后来我希望我的代码在C++中工作,而C++编译器会抛出一个gamillions"从字符串常量转换为'char*'".我理解这个警告,但我不能100%确定实现该功能的最佳方法是什么,因此它可以快速地在C和C++上工作.这个函数被大量调用,它是一个重要的瓶颈,所以它必须很快.我最好的尝试是;
char* get_string(char c) {
char* str = (char*)malloc(50);
switch(c) {
case 'A':
sprintf(str, "some string");
return str;
Case 'B':
sprintf(str, "some other string");
return str;
...
Run Code Online (Sandbox Code Playgroud) 我将结构定义为:
struct taxPayer{
char name[25];
long int socialSecNum;
float taxRate;
float income;
float taxes;
};
Run Code Online (Sandbox Code Playgroud)
我的主要功能包括:
taxPayer citizen1, citizen2;
citizen1.name = "Tim McGuiness";
citizen1.socialSecNum = 255871234;
citizen1.taxRate = 0.35;
citizen2.name = "John Kane";
citizen2.socialSecNum = 278990582;
citizen2.taxRate = 0.29;
Run Code Online (Sandbox Code Playgroud)
编译给我一个错误(C3863 数组类型char[25]不可分配,表达式必须是一个可修改的左值) oncitizen1.name = "Tim McGuiness";以及 oncitzen2.name = "John Kane";
如何删除此错误并设置citizen1.name为一个名称和citizen2.name一个不同的名称?
void x( )
{
strcpy(a, strdup(p) );
}
Run Code Online (Sandbox Code Playgroud)
(错误)使用strdup进行分配,strcpy不会释放它
谁能告诉我上面的陈述有什么问题以及为什么我会收到这个错误?
int A(const char* name){
name = "Here you GO!";
char* new_name;
//strcpy(new_name,name);
new_name = const_cast<char *>(name);
printf("%s\n", new_name);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是我正在测试的源代码.
一个问题是,当我使用时const_cast<char *>,它说它是未声明的.(我知道它可以在'g ++'编译下工作)另一个问题是当我尝试strcpy将它们组合在一起时,它会弹出分段错误.前提是我必须gcc whatevername.c -std=c99用来编译.
有人提出一些建议如何解决这个问题.非常感谢..
我正在尝试使用 fgets 和 strtok() 逐行读取文件,并创建每个不同信息行的链接列表。
现在,我只是将信息放入一个数组中,只是想弄清楚如何正确读取信息,但它无法正常工作。
在 while(fgets) 部分,它似乎将所有内容正确加载到数组中,并将其打印出来。但是,在执行该循环并尝试打印出整个数组之后,我得到了非常奇怪的结果.. 这主要是最后一行的大部分内容,并且大部分都不是完整的单词或任何内容。
例如,如果我正在阅读:
Simpson, Homer, Male, 1976
Simpson, Marge, Female, 1978
Simpson, Bart, Male, 2002
Simpson, Lisa, Female, 2004
Simpson, Maggie, Female, 2011
Run Code Online (Sandbox Code Playgroud)
我最后得到的打印输出是这样的:
le
Simpson
Maggie
Simpson
Maggie
e
ale
Simpson
Maggie
e
e
Simpson
Maggie
Female
2011
Run Code Online (Sandbox Code Playgroud)
请让我知道我要去哪里错了,谢谢!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSTRINGSIZE 10
#define LINESIZE 128
struct person{
char firstName[MAXSTRINGSIZE];
char lastName[MAXSTRINGSIZE];
char gender[MAXSTRINGSIZE];
int birthYear;
struct person *next;
} *first, *current;
int main (void){
static …Run Code Online (Sandbox Code Playgroud) 我试图将文字传递给函数,将其分配给struct并在以后使用。我是否需要malloc()和strcpy(),或者可以保存char*以后使用(它是否静态分配)?
简约示例代码如下:
struct data {
char *string;
...;
}
Run Code Online (Sandbox Code Playgroud)
struct data *create_data(char *input_string, ...) {
struct data *result = malloc(sizeof(struct data));
result->string = input_string;
return result;
}
struct data *string = create_data("Hey", ...);
printf("%s", data->string);
Run Code Online (Sandbox Code Playgroud)
要么
struct data *create_data(char *input_string, ...) {
struct data *result = malloc(sizeof(struct data));
result->string = malloc(sizeof(input_string));
strcpy(result->string, input_string);
return result;
}
struct data *string = create_data("Hey",...);
printf("%s", data->string);
Run Code Online (Sandbox Code Playgroud)
我是否可以期望第一个工作,以使内存中的数据不会被覆盖,或者假设这样做是不安全的?
如果我有一个字符串:Hi:my:name:is:lacrosse1991:我怎么能strtok用来检索is(换句话说第四个字段)?这将类似于你在bash中使用cut的方式,我会这样做cut -d ":" -f 4.如果这是一个错误的功能做这样的事情,请让我知道,任何帮助非常感谢,谢谢!(我刚刚开始自学C语言,如果这些是我要求的明显问题,我会提前道歉)
这是我将使用的剪切命令的示例
x=$(echo "$death" | cut -d ':' -f 4)
y=$(echo "$death" | cut -d ':' -f 5)
z=$(echo "$death" | cut -d ':' -f 6)
Run Code Online (Sandbox Code Playgroud) 以下代码之间的区别是什么:
char* str = "this is a string"
从这一个:
char* str = strdup("this is a string")
使用场景?
在下面,我试图在使用malloc()分配的内存后释放并对char*进行NULL化.请帮我确定根本原因.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main() {
char *str1="hello world";
char *str2=malloc((strlen(str1)+1) * sizeof(char));
str2=str1;
printf("%s",str2);
free(str2);
str2=NULL;
}
Run Code Online (Sandbox Code Playgroud)
-
错误是:
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)