我是C和系统编程的初学者.对于家庭作业,我需要编写一个程序,将stdin解析行的输入读入单词并使用System V消息队列(例如,计数单词)将单词发送到排序子进程.我被困在输入部分.我正在尝试处理输入,删除非字母字符,将所有字母单词放在小写字母中,最后将一行单词分成多个单词.到目前为止,我可以用小写字母打印所有字母单词,但字母之间有一些线,我认为这是不正确的.有人可以看看并给我一些建议吗?
来自荷马的荷马伊利亚特的Project Gutenberg电子书
我认为正确的输出应该是:
the
project
gutenberg
ebook
of
the
iliad
of
homer
by
homer
Run Code Online (Sandbox Code Playgroud)
但我的输出如下:
project
gutenberg
ebook
of
the
iliad
of
homer
<------There is a line there
by
homer
Run Code Online (Sandbox Code Playgroud)
我认为空行是由","和"by"之间的空格引起的.我尝试了"if isspace(c)然后什么都不做"之类的事情,但它不起作用.我的代码如下.任何帮助或建议表示赞赏.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>
//Main Function
int main (int argc, char **argv)
{
int c;
char *input = argv[1];
FILE *input_file;
input_file = fopen(input, "r");
if (input_file == 0)
{
//fopen returns 0, the NULL pointer, …Run Code Online (Sandbox Code Playgroud) 我正在学习 javascript、xml 和 html。对于家庭作业,我需要从 XML 文件的某些节点检索一些数据,连接数据,并将连接后的字符串存储在 localStorage 中。我在 localStorage 中存储连接字符串时遇到问题。我相信问题出在这两行 -
var s_data = localStorage[学生];
$("#clickme").text("学生的名字:" + s_data);
有人可以看看并给我一些有关如何修复它的提示吗?预先感谢您的帮助。
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<title>HWK</title>
<meta charset="UTF-8">
</head>
<body>
<div id="clickme" onclick="startAjax()">Click me to see all the students' first names</div>
<script>
function startAjax(){
$("#clickme").text("Calling server");
$.ajax({url:"hwk.xml",
success:callbackFunction, error:errorFunction});
}
function callbackFunction(data,info)
{
var students = $(data).find("student first_name");
try {
if (students && students.length)
{
var s_data = localStorage[students];
$("#clickme").text("Students' first names: " + s_data);
}
}
catch (e) { …Run Code Online (Sandbox Code Playgroud) 我试图让用户输入一个字符串,这样我就会打印字符串的长度.我的代码构建成功.但是,当我输入一个单词并按下'enter'时,程序继续运行.我必须输入第二个单词,然后显示第一个字符串的长度.我对argv感到困惑[1].有人可以给我一些提示并暗示如何解决这个问题吗?在此先感谢您的时间.
请注意,我不允许使用任何字符串功能.
int main(int argc, char* argv[]){
char* s=argv[1];
char input[256];
s = input;
printf("Please enter a string: ");
scanf("%s\n", s);
int str_length = 0;
while (s[str_length] != '\0')
{
str_length++;
if (s[str_length] == '\0') break;
}
printf("%d\n", str_length);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我是C和编程的新手.我被困在做作业练习.我的输出只显示大写的第一个字符,以及一些奇怪的数字中的以下字符.有人可以看看我的代码并给我一些关于我做错了什么以及解决问题的方法的提示吗?非常感谢您的帮助!
"写一个函数void sticky(char*word),其中word是单个单词,例如"sticky"或"RANDOM".stand()应修改单词以"sticky caps"出现(http://en.wikipedia. org/wiki/StudlyCaps),也就是说,字母必须是交替的情况(上部和下部),从第一个字母的大写字母开始.例如,"sticky"变为"StIcKy","RANDOM"变为"RaNdOm"注意字符串的结尾,用'\ 0'表示.你可以假设合法字符串被赋予sticky()函数."
#include <stdio.h>
#include <stdlib.h>
/*converts ch to upper case, assuming it is in lower case currently*/
char toUpperCase(char ch)
{
return ch-'a'+'A';
}
/*converts ch to lower case, assuming it is in upper case currently*/
char toLowerCase(char ch)
{
return ch-'A'+'a';
}
void sticky(char* word){
/*Convert to sticky caps*/
for (int i = 0; i < sizeof(word); i++)
{
if (i % 2 == 0)
{
word[i] = toUpperCase(word[i]);
}
else
{ …Run Code Online (Sandbox Code Playgroud) 我是C和编程的初学者.我想问一些有关C中动态数组和指针的问题.
我正在尝试创建一个动态数组并增加其容量,但我无法让我的代码工作.我相信我的setCapacityDynArr功能有问题.
有人可以给我一些帮助吗?谢谢!
struct DynArr {
TYPE *data; /* pointer to the data array */
int size; /* Number of elements in the array */
int capacity; /* capacity ofthe array */
};
void initDynArr(struct DynArr *v, int capacity) {
v->data = malloc(sizeof(TYPE) * capacity);
assert(v->data != 0);
v->size = 0;
v->capacity = capacity;
}
void freeDynArr(struct DynArr *v) {
if (v->data != 0) {
free(v->data); /* free the space on the heap */
v->data = 0; /* …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建我的第一个makefile.我使用以下命令测试了我的程序:
Command 1: gcc -Wall -ggdb3 -std=c99 -o file1 file1.c -lm -lpthread -l
Command 2: gcc -Wall -ggdb3 -std=c99 -o file2 file2.c -lm -lpthread
Run Code Online (Sandbox Code Playgroud)
一切都很好.然后我创建了一个makefile(请参见下文).我一直收到错误消息.有人可以看看我的代码,并给我一个问题是什么的提示?
file2.o: In function `seed_primes':
file2.c:(.text+0x461): undefined reference to `sqrt'
file2.c:(.text+0x466): undefined reference to `sqrt'
file2:(.text+0x533): undefined reference to `sqrt'
file2.o: In function `create_threads':
file2.c:(.text+0x668): undefined reference to `pthread_create'
file2.c:(.text+0x6b5): undefined reference to `pthread_join'
file2.o: In function `next_seed':
file2.c:(.text+0x860): undefined reference to `sqrt'
collect2: ld returned 1 exit status
make: *** [file2] Error 1
Run Code Online (Sandbox Code Playgroud)
这是我的makefile:
CC=gcc …Run Code Online (Sandbox Code Playgroud) 我正在学习C.我需要定义一个函数来键入void *转换为所需类型的值.我不确定我是否完全理解我需要做什么.这是我的尝试.有人可以看看,让我知道它是否正确?如果没有,我该如何解决?提前谢谢您的时间.
void print_type(TYPE a)
{
void *v_ptr;
v_ptr = &a;
}
Run Code Online (Sandbox Code Playgroud)