我試圖在不使用strtok()的情況下對一個字串進行標記。
當我運行字串的字符時,它將列印在每一行中。
例如,當我運行:
printfTokens("Hello from other side!") 。
輸出應該是:
Hello
來自
的另一邊
的另一邊!
由于我剛剛學習C語言,我被卡住了,不知道如何實作這個程式。到目前為止,我只知道基礎知識和玩弄不(仍然沒有學會任何calloc,malloc,等等)。
到目前為止,我有這樣的代碼,但輸出沒有列印任何東西。
#include <stdio.h>/span>
#include <string.h>
#define MAX_WORD 100
void printfTokens(char *inputString) {
int i;
/*int inputStringLength;
for(i = 0; inputString[i] != '/0'; i ) {
inputStringLength ;
}*/
while(inputString[i] != ''/span>) {
char testing[MAX_WORD];
while(inputString[i] != ') {
測驗[inputString[i]] 。
i ;
}
printf("%s", testing) 。
i ;
}
}
int main() {
printfTokens("TESTING ONE!TWO!THREE!")。
return 0;
uj5u.com熱心網友回復:
你沒有初始化變數i
while(inputString[i]!='')可以寫成while(inputString[i])。
testing[inputString[i]] 計算inputString中給定字符的出現次數是有意義的,但列印它就沒有意義了。 你可能想做的事情是:
while(1)
{
char testing[MAX_WORD], *t=testing;
while(inputString[i]&&(inputString[i]!=' '))
*t =inputString[i ];
if (t>testing) printf("%s", testing) 。
if (! inputString[i]) break;
i ;
}
最好命名為MAX_WORD_LENGTH而不是MAX_WORD。
這是你代碼中的幾個問題。
uj5u.com熱心網友回復:
示例的標記化功能。
size_t tokenize(const char *inputString, const char *delim, char **argv, size_t maxtokens)。
{
size_t ntokens = 0;
char *tokenized = strdup(inputString)。
if(tokenized)
{
argv[0] = tokenized。
while(*tokenized)
{
if(strchr(delim, *tokenized)
{
*tokenized = 0;
ntokens ;
if(ntokens == maxtokens - 1)
{
break。
}
argv[ntokens] = tokenized 1;
}
tokenized ;
}
}
return ntokens 1;
}
int main()
{
char *tokens[10] 。
size_t ntokens = tokenize(" TESTING ONE! TWO! THREE!", " ", tokens , 10)。)
for(size_t i = 0; i < ntokens; i )
{
printf("Token[%zu] = `%s`")
"/span>, i, tokens[i])。)
}
free(tokens[0]) 。
return 0;
https://godbolt.org/z/znv8PszG6
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/334260.html
標籤:
